Как проверить загружаемый файл (его размер)

sarkis

Профессор
Регистрация
27 Фев 2014
Сообщения
248
Реакции
40
Всем привет ..
На сайте реализовал проверку файлов:


Код:
if($_FILES["img_adv"]["size"][$n] < MAX_SIZE_IMG ){
код
}else{echo "alert";}

MAX_SIZE_IMG=5 килобайт (для проверки)

Проблема : если загружать файлы до 2 мб (где-то) , то ошибка вылазит без проблем и скрипт не исполняется (так и нужно , т.к лимит 5 кб) ,

А вот, если я загружаю файл свыше , где-то от 10мб , то ошибка не выскакивает , скрипт исполняется , но файл не загружается ...
Почему так происходит ? ведь сначала идет проверка размера файла?

Добавлю : возможно тут лимит ответа сервера играет роль (т.к файл долго грузится ) , но как тогда сделать , чтоб все-таки , ошибка выскочила ?
 
Всем привет ..
На сайте реализовал проверку файлов:


Код:
if($_FILES["img_adv"]["size"][$n] < MAX_SIZE_IMG ){
код
}else{echo "alert";}

MAX_SIZE_IMG=5 килобайт (для проверки)

Проблема : если загружать файлы до 2 мб (где-то) , то ошибка вылазит без проблем и скрипт не исполняется (так и нужно , т.к лимит 5 кб) ,

А вот, если я загружаю файл свыше , где-то от 10мб , то ошибка не выскакивает , скрипт исполняется , но файл не загружается ...
Почему так происходит ? ведь сначала идет проверка размера файла?

Добавлю : возможно тут лимит ответа сервера играет роль (т.к файл долго грузится ) , но как тогда сделать , чтоб все-таки , ошибка выскочила ?
Можно чтобы браузер проверял:
HTML:
<input type="hidden" name="MAX_FILE_SIZE" value="500" />
<input type="file" name="uploadField" />

А так, загружаешь пол часа файл ради того, чтобы увидеть ошибку
 
Код:
if(filesize($_FILES['img_adv']['tmp_name'])< MAX_SIZE_IMG ){
код
}else{echo "alert";}
 
возможно на сервере стоит ограничение на загрузку файлов.
если вы загружаете больше чем указано в настройках - загрузка файла прекратится. вероятно дальше скрипт начинает работать, сверяет размер файла.... которого нет.
т.е. размер 0 - меньше чем MAX_SIZE_IMG ? меньше! соответственно код выполняется

посмотрите функцией phpinfo() параметры post_max_size и upload_max_filesize
 
возможно на сервере стоит ограничение на загрузку файлов.
если вы загружаете больше чем указано в настройках - загрузка файла прекратится. вероятно дальше скрипт начинает работать, сверяет размер файла.... которого нет.
т.е. размер 0 - меньше чем MAX_SIZE_IMG ? меньше! соответственно код выполняется

посмотрите функцией phpinfo() параметры post_max_size и upload_max_filesize


это я понял ..Вопрос : как заставить скрипт перестать работать ,если файл больше параметров хоста ?
 
я думаю никак не заставить, поскольку на момент выполнения PHP скрипта запрос от пользователя уже пришел, и либо файл загружен успешно, либо не загружен и тогда невозможно получить размер того, чего нет

либо увеличивайте в настройках указанные выше параметры, чтобы сервер "хавал" все подряд,
либо сделать загрузку файла обязательным, и тогда размер 0 будете рассматривать как ошибку

P.S.
размер загруженного файла можно узнать через элемент массива $_FILES['userfile']['size'] , необязательно использовать функцию filesize
 
это я понял ..Вопрос : как заставить скрипт перестать работать ,если файл больше параметров хоста ?
только если через ini_set заранее поставишь размеры, в которые файл точно войдет. Но я не рекомендую так делать, в этом случае тебе /tmp директорию блюреями залепят и сайт умрет.
 
Назад
Сверху