Загрузка файла через HTML-форму.В PHP $ _FILES пусто - PullRequest
1 голос
/ 08 ноября 2011

Итак, у меня есть этот код:

<form name="form" action="./" method="post">
<input type="file" name="newfile" id="newfile" />
</form>

Когда я запускаю этот php-скрипт на странице действий, ничего не происходит

echo "$_FILES['newfile']['name'];
print_r($_FILES);

Это похоже на то, что переменная $_FILES пуста. Есть ли способ это исправить?

Ответы [ 3 ]

4 голосов
/ 08 ноября 2011

Вам необходимо установить атрибут enctype="multipart/form-data" в вашей форме.

Пример 1 с php.net :

<!-- The data encoding type, enctype, MUST be specified as below -->
<form enctype="multipart/form-data" action="__URL__" method="POST">
    <!-- MAX_FILE_SIZE must precede the file input field -->
    <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
    <!-- Name of input element determines name in $_FILES array -->
    Send this file: <input name="userfile" type="file" />
    <input type="submit" value="Send File" />
</form>
1 голос
/ 08 ноября 2011

Если вы не укажете <form … enctype="multipart/form-data">, тогда данные будут закодированы способом, который не поддерживает файлы.

Добавьте атрибут с этим значением.

С спецификация HTML :

enctype = тип содержимого [CI]

Этот атрибут указывает тип содержимого, используемого для отправки формы на сервер (когда значение метода «post»). Значением по умолчанию для этого атрибута является «application / x-www-form-urlencoded». Значение «multipart / form-data» следует использовать в сочетании с элементом INPUT, type = «file».

С руководство по PHP :

<!-- The data encoding type, enctype, MUST be specified as below -->
<form enctype="multipart/form-data" action="__URL__" method="POST">
0 голосов
/ 08 ноября 2011
echo "$_FILES['newfile']['name'];

Это синтаксическая ошибка. Должно быть

echo $_FILES['newfile']['name']; 

или

echo "{$_FILES['newfile']['name']}";
...