Загрузка больших файлов

iNfantry

Новичок
Подскажите как правильно обрабатывать ситуацию если загружают большой файл, который превышает допустимый размер? В идеале надо сделать так, чтобы еще до начала самой загрузки после сабмита формы выдавалась ошибка что размер слишком большой, но насколько я знаю похапэ не умеет определять размер файла до загрузки (надеюсь я не прав!). Отсюда и вопрос, как нормальные люди решают эту проблему...
 

ХакИрФсимагущий

[засикречино]
<input type="hidden" name="MAX_FILE_SIZE" value="100000" />
Но хакерцам ничто не помешает загрузить фаил игнорируя это ограничение, поэтому сюда надо добавить либо проверку размера после загрузки файла, либо в конфигах максимальный размер передоваемых фалоф(по привышении которого будет прекращена загрузка).

Еще как вариант, возможно браузеры в зголовках отправляют размер переслыаемого контента, посмотрите еще в эту сторону.
 

fixxxer

К.О.
Партнер клуба
В чем проблема проверить размер файла со стороны сервера?
 

iNfantry

Новичок
сюда надо добавить либо проверку размера после загрузки файла, либо в конфигах максимальный размер передоваемых фалоф(по привышении которого будет прекращена загрузка).
А как вобще процесс загрузки в случае ошибки происходит - просто загрузка прерывается и управление передается скрипту? Будет ли в таком случае инициализирован массив $_FILES? И что будет в $_FILES['my_file']['size']?
 

fixxxer

К.О.
Партнер клуба
1) вснунуть <input type="hidden" name="MAX_FILE_SIZE" value="..." />
2) проверять в браузерах, где это возможно, через javascript file api
3) если (1) и (2) обломались - придется пользователю при превышении max post size / max upload size увидеть некрасивую фигню с ошибкой (можно обойти отправкой формы аяксом)
4) если по max post size / max upload size прошло - проверяешь размер в $_FILES
 

ХакИрФсимагущий

[засикречино]
обработчик ошибки 413 написать но не будут доступны ранее переданные данные, разве что куки прочитать сможете
 

iNfantry

Новичок
3) если (1) и (2) обломались - придется пользователю при превышении max post size / max upload size увидеть некрасивую фигню с ошибкой (можно обойти отправкой формы аяксом)

Щас проверил на реальном хостинге, контроль ошибок поставил на максимум, там размер 50мб - при превышении баг не выводится, просто $_FILES пустой...
И на локалхосте у меня тоже самое кстати, баг не выводится, массив пустой.
 

fixxxer

К.О.
Партнер клуба
В настройках веб-сервера лимит больше, чем в настройках php - это нормальная ситуация, которую тоже надо обрабатывать
 

Ragazzo

TDD interested
fixxxer
посмотрел демо, я ошибаюсь или работает только для Gecko(Mozilla и только) исключительно, т.к. в Opera не получилось ничего даже? FileReader как бы есть везде Опера/Хром/Мозилла, но демо у них не работает.
 
Сверху