bool (false) Загрузка файла - PullRequest
1 голос
/ 28 февраля 2012

У меня были проблемы с простым PHP-скриптом, в котором я могу загрузить файл в определенную папку. Я пытался сделать это несколькими способами, но до сих пор не добился успеха.

Любые ошибки в моем коде или советы о том, как исправить проблему, будут приняты изящно.

Основной код 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>

Php-код, который вызывается при нажатии (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); 
 } 
?>

Я не понимаю, почему мои конечные результаты [после нажатия кнопки «Загрузить файлы»] включают в себя только следующие результаты:

"Произошла ошибка при загрузке файла, пожалуйста, попробуйте еще раз! Bool (false)"

Еще одна вещь: я также попытался использовать полный путь к папке компьютера для $ target_path и chmod.

Кто-нибудь видит, что я делаю неправильно?

Ответы [ 3 ]

2 голосов
/ 28 февраля 2012

У вас есть <input name="userfile", но затем используйте $_FILES['uploadedfile'] в вашем скрипте - используйте один или другой.

Кроме этого, убедитесь, что chmod работает и папка доступна для записи.

1 голос
/ 28 февраля 2012

bool(false) - это вывод var_dump($test);, указывающий, что move_uploaded_file возвращает false.

В качестве основного шага отладки вы должны попробовать var_dump($_FILES), чтобы убедиться, что вы обращаетесь к нужному элементу этого массива (из вашего кода я могу сказать, что это не так, индекс будет атрибутом name вашего <input type="file"/> элемента).

У вас есть по крайней мере еще один серьезный недостаток в вашей логике ... Код PHP в форме загрузки не имеет никакого смысла. Этот блок кода PHP будет выполняться на стороне сервера до того, как пользователь загрузит файл. Это не может работать. Две проверяемые переменные $userfile_size и $userfile_type нигде не определены.

0 голосов
/ 19 мая 2019

В моем случае я забыл создать папку, куда я хочу загрузить. Поэтому проверьте, доступен ли указанный путь загрузки или нет.

...