$_FILES пуст при загрузке

При попытке доступа к массиву $_FILES PHP возвращает ошибку

«Неопределенный индекс: изображение».

В моем файле php.ini включены File Uploads, и любой пользователь может писать в каталог /tmp. В HTML-форме enctype имеет значение "multipart/form-data". Интересно, что базовое имя для загруженного файла печатается, поэтому я считаю, что PHP действительно видел файл, но имеет некоторые проблемы с его загрузкой. Может ли кто-нибудь предложить возможные решения этой проблемы? Кстати, я использую PHP5.

Фрагменты из файла PHP

echo "Picture=" . $_POST['picture'] . "<br/>";
$uploadedPic = $_FILES['picture']['tmp_name'];

HTML-форма

<form action="PHPFile.php" method="post" enctype="multipart/form-data">

<p> Picture </p>
<input type = "file" id="picture" name="picture"/>

</form>

person Paradius    schedule 28.08.2009    source источник
comment
Вы пробовали var_dumping $_FILES?   -  person n1313    schedule 28.08.2009
comment
Вы случайно не используете Javascript для сериализации своей формы?   -  person JorenB    schedule 28.08.2009
comment
post_max_size и upload_max_filesize в вашем php.ini установлены на достаточно большое значение?   -  person Zed    schedule 28.08.2009
comment
Я использовал print_r для печати содержимого массива $_FILES, и он напечатал пустой массив. По какой-то неловкой причине это работает сейчас. Все, что мне нужно было сделать, это перезапустить сервер. Никаких настроек я не менял, а размер файла меньше 40 КБ. Спасибо за вашу помощь!   -  person Paradius    schedule 30.08.2009
comment
Недавно у меня была эта проблема, и это было потому, что я забыл добавить enctype=multipart/form-data в объявление формы, я вижу, что вы этого не сделали, но на случай, если кто-нибудь еще попадет сюда.   -  person Nick Pickering    schedule 06.12.2012


Ответы (6)


В какой строке вы получаете это предупреждение? Если это тот, у которого $_POST['picture'], то это логично, вы не найдете загруженные данные файла в $_POST, они есть в $_FILES

person Anti Veeranna    schedule 28.08.2009
comment
На заметку.... вы захотите проверить, если $_SERVER['REQUEST_METHOD'] == 'POST', если вы просто загружаете файл в свою форму и не отправляете какие-либо другие данные - person SeanJA; 28.08.2009

echo "Picture=" . $_POST['picture'] . "<br/>";

POST-переменная

$_POST['picture']

не существует, так что да, он выдаст неопределенную ошибку.

person Steerpike    schedule 28.08.2009

лол, предыдущий автор сказал, что перезагрузка их сервера исправила это. Я сделал то же самое, и почему-то это работает. я не вносил изменений в код, и сброс IIS тоже не работал. потребовалась перезагрузка самого компьютера. это около 2 часов полностью потеряны.

person nullsteph    schedule 26.02.2012

Какой уровень или сообщения об ошибках вы используете? error_reporting(E_ALL) включит полную отчетность и может дать вам подсказку. Как описано ранее, выполните печать $_FILES с помощью var_dump() или print_r(), чтобы увидеть информацию для вашего файла.

person Community    schedule 28.08.2009

Не могу комментировать, поэтому скажу здесь.

ЧЕЛОВЕК, это эхо напечатает имя файла! Оно работает! Он сказал, что это работает.

Интересно, что базовое имя загруженного файла печатается, поэтому я считаю, что PHP действительно видел файл[...]

Хороший совет: попробуйте var_dump $_FILES и добавьте сюда его содержимое. У вас может быть ошибка, потому что файл слишком большой, или какая-то другая полезная информация.

person igorsantos07    schedule 28.08.2009

попробуйте добавить

<input type="hidden" name="MAX_FILE_SIZE" value="30000" />

до

<input type = "file" id="picture" name="picture"/>
person dir01    schedule 13.09.2009