Загрузка нескольких файлов multipart/form-data. Ограничение размера.

  • Автор темы Автор темы ksaphan
  • Дата начала Дата начала

ksaphan

Новичок
Загрузка нескольких файлов multipart/form-data. Ограничение по времени. ЕЩЕ вопрос!

Делаю форму для загрузки нескольких файлов на сервер (3 и более, в зависимости от выбора).
PHP:
<form enctype="multipart/form-data" action="__URL__" method="POST">
      <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
      <input name="userfile[]" type="file" />
      <input name="userfile[]" type="file" />
      <input type="submit" value="Send File" />
</form>
Но при submit этой формы ВСЕ файлы загружаются, даже те, размер которых больше, браузер игнорирует значение MAX_FILE_SIZE. Пробовал писать это поле перед каждым полем для ввода файла. То же самое. Как мне ограничить это на уровне браузера?
И еще проблема: если хотя бы один файл больше примерно 6-7 мегабайт (я еще не определил точно), то массив $_FILES вообще оказывается неопределен. При этом если файл около 3-4 мегабайт (в php.ini указан макс. размер 2 мега), то переменная $_FILES['userfile']['error'][num] всодержит ошибку, что размер превышен, как и нужно. Но если файл больше, то переменная вообще не определена! php ругается на неизвестный параметр userfile.
Еще: есть ли ограничение на размер посылаемой через POST информации?
 
ksaphan

а почему она должна быть определена, если при закачке произошла ошибка? не судьба проверить isset?
 
Да, я понимаю что ошибка. isset помогает.
Но в таком случае ни один из файлов не загружается.
Я хочу понять, из-за чего возникает ошибка.
Может предел для POST какой-то есть?

-~{}~ 15.02.06 16:36:

И что на счет MAX_FILE_SIZE, как мне ограничить размер на стороне клиента?
 
ksaphan
Злой клиент все равно сможет закачать файлов больше, чем его просят.
 
ksaphan

эта переменная работает либо на 1 файл либо по совокупности - не помню точно - короче закачку много файлов сразу ей не ограничить помоему
 
От злого клиента я в любом случае ограничиваю на стороне сервера, просто не хочется чтобы добрый клиент долго ждал, и ничего не получил.

Еще есть мнения?
 
Предупредить его заранее?

На клиентской стороне никаких механизмов ограничения размера закачиваемых файлов не предусмотрено.
 
Но если клиент по ошибке начинает загружать большой файл?
Неужели нельзя как-то вычислить размер файла на стороне клиента и проанализировать его? Тот же MAX_FILE_SIZE. Нельзя ли как-нибудь его прикрутить.

На счет POST нашел post_max_size - ограничение POST, поэтому и не существовал массив.

И еще, есть ли ограничение по времени на отправку файлов по POST? Не связано ли оно с временем выполнения скрипта (которое по дефолту в php.ini равно 30 секунд)?
 
ksaphan

вычисляй JavaScript'ом - какое отношение все это к PHP имеет?
 
Сверху