Miałem problemy z prostym skryptem php, w którym mogę wgrać plik do określonego folderu. Próbowałem tego na wiele sposobów i nadal nie odniosłem sukcesu.
Wszelkie błędy w moim kodzie lub porady, jak naprawić problem, zostaną przyjęte z wdziękiem.
Główny kod php:
<p>Browse For a File on your computer to upload it!</p>
<form enctype="multipart/form-data" action="upload_photos.php" method="POST">
Choose Photo:
<input name="userfile" type="file" /><br />
<input type="submit" value="Upload Photo" />
<?PHP
if ($userfile_size>250000)
{$msg=$msg."Your uploaded file size is more than 250KB so please reduce the file size and then upload.<BR>";
$file_upload="false";}
else{
if (!($userfile_type<>"image/jpeg" OR $userfile_type<>"image/tiff" OR $userfile_type<>"image/png"))
{$msg=$msg."Your uploaded file must be of JPG, PNG, or tiff. Other file types are not allowed<BR>";
$file_upload="false";}
}
?>
</form>
</label>
</form>
Kod php, który jest wywoływany po kliknięciu (upload_photos.php)
<?php
$target_path="uploads/";
chmod("uploads/", 0755);
$target_path=$target_path . basename( $_FILES['uploadedfile']['name']);
$test=move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path);
if($test) {
echo "The file ". basename( $_FILES['uploadedfile']['name']).
" has been uploaded";
} else{
echo "There was an error uploading the file, please try again!";
var_dump($test);
}
?>
Nie rozumiem, dlaczego moje wyniki końcowe [po kliknięciu przycisku „Prześlij pliki”] zawierają tylko następujące wyniki:
"Wystąpił błąd podczas przesyłania pliku, spróbuj ponownie!bool(false)"
Jeszcze jedno: próbowałem również użyć pełnej ścieżki folderu komputera dla $target_path i chmod.
Czy ktoś widzi, co robię źle?
3 odpowiedzi
Masz <input name="userfile"
, ale używasz $_FILES['uploadedfile']
w swoim skrypcie - użyj jednego lub drugiego.
Poza tym upewnij się, że chmod
działa, a folder jest zapisywalny.
bool(false)
jest wynikiem var_dump($test);
, wskazując, że move_uploaded_file
zwraca fałsz.
Jako podstawowy krok debugowania powinieneś spróbować var_dump($_FILES)
, aby upewnić się, że uzyskujesz dostęp do właściwego elementu tej tablicy (z twojego kodu mogę stwierdzić, że tak nie jest, indeks będzie name
atrybut elementu <input type="file"/>
).
Masz co najmniej jeszcze jedną poważną wadę w swojej logice... Kod PHP w formularzu przesyłania nie ma żadnego sensu. Ten blok kodu PHP zostanie wykonany po stronie serwera, zanim użytkownik prześle plik. To nie może działać. Dwie zmienne, które sprawdzasz, $userfile_size
i $userfile_type
, nie są nigdzie zdefiniowane.
W moim przypadku zapomniałem utworzyć folder, do którego chcę wgrać. Więc sprawdź, czy określona ścieżka przesyłania jest dostępna, czy nie.
Podobne pytania
Nowe pytania
php
PHP to szeroko stosowany, wysokopoziomowy, dynamiczny, zorientowany obiektowo i interpretowany język skryptowy przeznaczony głównie do tworzenia stron WWW po stronie serwera. Używane w przypadku pytań dotyczących języka PHP.