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

Тема в разделе "Как сделать...", создана пользователем sarkis, 13 июн 2015.

  1. sarkis

    sarkis

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


    Код:
    if($_FILES["img_adv"]["size"][$n] < MAX_SIZE_IMG ){
    код
    }else{echo "alert";}
    
    MAX_SIZE_IMG=5 килобайт (для проверки)

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

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

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

    Q_BASIC

    Регистр.:
    30 ноя 2013
    Сообщения:
    380
    Симпатии:
    236
    Можно чтобы браузер проверял:
    HTML:
    <input type="hidden" name="MAX_FILE_SIZE" value="500" />
    <input type="file" name="uploadField" />
    А так, загружаешь пол часа файл ради того, чтобы увидеть ошибку
     
    sarkis и Provokator86 нравится это.
  3. strong

    strong Писатель

    Регистр.:
    18 янв 2008
    Сообщения:
    3
    Симпатии:
    3
    Код:
    if(filesize($_FILES['img_adv']['tmp_name'])< MAX_SIZE_IMG ){
    код
    }else{echo "alert";}
    
     
  4. denverkurt

    denverkurt Denve®

    Регистр.:
    23 дек 2013
    Сообщения:
    643
    Симпатии:
    370
    возможно на сервере стоит ограничение на загрузку файлов.
    если вы загружаете больше чем указано в настройках - загрузка файла прекратится. вероятно дальше скрипт начинает работать, сверяет размер файла.... которого нет.
    т.е. размер 0 - меньше чем MAX_SIZE_IMG ? меньше! соответственно код выполняется

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

    sarkis

    Регистр.:
    27 фев 2014
    Сообщения:
    249
    Симпатии:
    36

    это я понял ..Вопрос : как заставить скрипт перестать работать ,если файл больше параметров хоста ?
     
  6. denverkurt

    denverkurt Denve®

    Регистр.:
    23 дек 2013
    Сообщения:
    643
    Симпатии:
    370
    я думаю никак не заставить, поскольку на момент выполнения PHP скрипта запрос от пользователя уже пришел, и либо файл загружен успешно, либо не загружен и тогда невозможно получить размер того, чего нет

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

    P.S.
    размер загруженного файла можно узнать через элемент массива $_FILES['userfile']['size'] , необязательно использовать функцию filesize
     
    BaBL и sarkis нравится это.
  7. BaBL

    BaBL Постоялец

    Регистр.:
    13 ноя 2012
    Сообщения:
    144
    Симпатии:
    87
    только если через ini_set заранее поставишь размеры, в которые файл точно войдет. Но я не рекомендую так делать, в этом случае тебе /tmp директорию блюреями залепят и сайт умрет.