2014-02-19 4 views
0

Я попытался написать базовый сценарий загрузки php, и он не работает. Вот HTML:Загрузка файла PHP не работает

<html> 
<body> 
    <form action="home.php" method="post" enctype="multipart/form-data"> 
    <input type="file" name="files_to_upload"> 
    <input type="hidden" name="MAX_FILE_SIZE" value="262144000"> 
    <input type="submit" value="upload"> 
    </form> 
</body> 
</html> 

А вот PHP:

<?php 
if (isset($_FILES['files_to_upload'])){ 
if(@is_uploaded_file($_FILES['files_to_upload']['tmp_name'])) { 
    echo "<br>";var_dump($_FILES);echo "<br>"; 
    if (move_uploaded_file($_FILES['files_to_upload']['tmpname'],'/home/user/pdf/')) 
    echo '<script>alert("moved");</script>'; 
} 
} 
?> 

Я не получаю moved предупреждение, поэтому последняя функция возвращает ложь, я думаю. Вот var_dump из $_FILES:

array(1) { ["files_to_upload"]=> array(5) { 
["name"]=> string(15) "O0903f21011.pdf 
["type"]=> string(15) "application/pdf" 
["tmp_name"]=> string(14) "/tmp/phpgaSHzm" 
["error"]=> int(0) ["size"]=> int(314758) } 
} 

Edit: каталог /home/user/pdf имеет все права, предоставленные всем пользователям.

+2

Символ * * назначения должен быть именем файла. Вы используете каталог. Попробуйте что-то вроде '/ home/user/pdf/'. $ _FILES ['file_to_upload'] ['name'] ' – Phil

+0

@Phil Я просто попробовал также с именем файла, это то же самое. Я не получаю последнее предупреждение. – sleax

+1

По соображениям безопасности я бы посоветовал вам ограничить размер файла на стороне сервера, в вашем php, а не в форме. любой хакер может использовать вашу скрытую форму ввода с помощью firefox и может изменить ее. Так же, как совет, вы не об этом. – Mubo

ответ

6

Вы опечатка ошибка, замените:

if (move_uploaded_file($_FILES['files_to_upload']['tmpname'],'/home/user/pdf/')) 
    echo '<script>alert("moved");</script>'; 
} 

с

if (move_uploaded_file($_FILES['files_to_upload']['tmp_name'],'/home/user/pdf/tmp_file.pdf')) 
    echo '<script>alert("moved");</script>'; 
} 
+0

Я редактировал, как вы предлагали, но все равно не может получить последнее предупреждение. – sleax

+0

, если проблема с перемещением файла по-прежнему сохраняется, вы должны увидеть предупреждение внутри php.log. Также попробуйте использовать: echo 'Moved'; вместо этого ''; – ziollek

+0

Это журнал: '[Thu Feb 20 00: 32: 37.256211 2014] [: error] [pid 12582] [клиент 127.0.0.1:33025] PHP Warning: move_uploaded_file(): Невозможно переместить '/ tmp/php1JbDa9' to '/ home/user/pdf/tmp_file.pdf''. Я также попытался использовать «эхо» перемещен », но ничего не получил. – sleax

Смежные вопросы