Я работаю над сценарием загрузки PHP и при тестировании моих проверок на ошибки, я попытался загрузить файл TIFF 17 МБ. Когда я делаю это, $ _FILES массив пуст. Сценарий хорошо работает для того, что мне нужен он, чтобы сделать, который должен загрузить файлы JPEG. Мое решение состоит в том, чтобы протестировать, если $ _FILES пуст или не прежде, чем продолжить сценарий загрузки.
Кто-либо может объяснить, почему $ _FILES пуст, когда TIFF предпринят, чтобы быть загруженным? Мое решение, чтобы проверить, пуст ли $ _FILES или нет, хорошо один?
Делает это имеет некоторое отношение к настройкам в php.ini
?
Просто для уточнения
Я проверял это $_FILES
было пустое использование следующего:
if(empty($_FILES))
{
die('$_FILES is empty.');
}
Да, upload_max_filesize управляет максимальным размером загрузки, который, скорее всего, превышен файлом TIFF. По умолчанию - 2M. Вы можете проверить:
echo ini_get("upload_max_filesize");
РЕДАКТИРОВАТЬ: На самом деле точная причина более вероятна post_max_size , которая всегда> = upload_max_filesize: "Если размер данных сообщения больше, чем post_max_size, $ _POST и $ Суперглобальные объекты _FILES пусты. "
Вы должны проверить, равно ли $ _ FILES ['file'] ['error']
0
. Это указывает на «успех».
Если ваш массив файлов пуст, это может быть связано с какой-то другой проблемой, например, с отсутствием enctype.
Попробуйте выполнить var_dump ($ _ FILES)
и просмотреть содержимое ...
ИЗМЕНИТЬ : Я знаю, что вы можете установить максимальный размер файла в php.ini
файл, но я не уверен, что это даст вам пустой массив файлов. Думаю, вы просто получите ошибку.
Как уже сообщалось, он пуст, потому что в случае сбоя. Также проверьте такой элемент формы:
<input type="hidden" name="MAX_FILE_SIZE" value="-maxsizegoeshereinbytes-" />
Для дополнительной уверенности (если у вас действительно есть массив - добавив к сообщению «проверьте ключ ошибки», кстати), вы также можете проверить размер
if( $_FILES['file']['size'] > 0 ) {
}