Intereting Posts
Android SAX Parser с образцом символов новой строки? Вход в Codeigniter с facebook ничего не происходит тип контента 'text / xml; charset = utf-8 'не был ожидаемым типом' application / soap + xml; кодировка = UTF-8' Печать на отдельной странице Javascript? Измените эту функцию js так, чтобы она использовала значение, полученное из db вместо значений, указанных в массиве, для генерации опций Select Класс контроллера не найден в Laravel 4 CodeIgniter: пытается вызвать метод конструктора, чтобы проверить, зарегистрирован ли пользователь (вызывает бесконечный цикл перенаправления) Проверка того, был ли ID изменен на стороне клиента перед обновлением базы данных Пожалуйста, я хочу получить значение месяца и года из этого кода javascript как переменная PHP $ mm =? && $ yy =? Запустите Gps как фоновое обслуживание и отправьте координаты на веб-сервер (PHP) Как организовать классы Luracast Restler для создания связанных конечных точек маршрута? При назначении массива PHP массиву JS каждый алфавит значений массива делится добавление флажка в таблицу php запросов CakePhp не работает в Ubuntu 14.04 CURL – Получение кода HTTP

$ _FILES возвращает 0?

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

if (($_FILES["file"]["size"] < 2097152)) 

Файл большой (например, файл 7mb) будет проходить через оператор if, потому что по какой-либо причине, если я напечатаю $ _FILES ["file"] ["size"], он вернет 0 вместо правильного количества байтов , Если я попытаюсь загрузить что-то меньшее, например, 342kb, то $ _FILES ["file"] ["size"] вернет правильный размер.

Есть ли способ получить $ _FILES ["файл"] ["размер"], чтобы фактически сохранить правильный размер файла? В противном случае я не знаю, как исправить эту проблему.

Файл, который прерывается по какой-либо причине (загрузка не удалась, превышает пределы и т. Д.), Будет отображаться как размер 0

Вы должны проверить загрузку УСПЕХА, прежде чем делать что-либо с остальными данными eupload:

 if(array_key_exists('file', $_FILES)){ if ($_FILES['file']['error'] === UPLOAD_ERR_OK) { echo 'upload was successful'; } else { die("Upload failed with error code " . $_FILES['file']['error']); } } 

Здесь указаны коды ошибок. В вашем случае, если вы жестко закодировали лимит в 2 миллиона, а кто-то загрузил 2,1-мегабайтный файл, тогда код ошибки будет UPLOAD_ERR_INI_SIZE (aka 2 ), который «превышает ограничение, установленное в .ini-файле».

 if( $_FILES['file']['size'] && $_FILES['file']['size'] < (2<<20)) 

Попробуй это.

<< – оператор побитового сдвига, десятичный 2 – двоичный «10», затем добавьте 20 нулей.

Как я предположил в своем предыдущем комментарии, ваша проблема в том, что ограничение загружаемого файла в php.ini меньше 7 МБ.
Поэтому вы можете попытаться использовать

 if ($_FILES["file"]["size"] > 0 && $_FILES["file"]["size"] < 2097152) 

Учтите, что если вы установите ограничение (в php.ini) на 2 МБ, эта проверка может быть легко записана как

 if ($_FILES["file"]["size"] > 0)