проблема с загрузкой файлов

asker23

Новичок
проблема с загрузкой файлов

Пытаюсь обработать error который возникает при загрузке файлов размером больше чем это позволяет upload_max_filesize.
казалось бы просто вот кусок скрипта
PHP:
switch ($_FILES['userfile'] ['error'])	{
			   case 1:
		              print '<p>Ошибка: Вы пытаетесь загрузить файл больше чем это позволяют настройки сервера</p>';
		              break;
но почему если возникает эта ошибка мне на upload.php приходит только id сесcии и какойто пустой массив!
в начале скрипта добавил

print_r($_REQUEST);
print_r($_FILES);


вот output:

PHP:
Array ( [PHPSESSID] => t44gjtp663gfs2lkg7kka9cdq7 ) Array ( )
а куда потерялись все данные из формы загрузки ?
 

fixxxer

К.О.
Партнер клуба
Наверняка ты превысил не только upload_max_filesize, но и post_max_size (или как его там) - потому тело POST-запроса просто недочиталось до конца (или вообще не стало читаться по преаышению Content-Length), и информации нет. Учитывай, что post_max_size в base64.

Впрочем, я не уверен, что и при превышении только upload_max_filesize тело запроса читается до конца. Проверь, мне лень :)
 

asker23

Новичок
да, превысил я все параметры, но как отловить эту ошибку ?
 

dimagolov

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

asker23

Новичок
to dimagolov

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

Фанат

oncle terrible
Команда форума
файл всегда надо загружать отдельно от текста
 

dimagolov

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

файл всегда надо загружать отдельно от текста
кстати да, этого легко достигнуть отдельным iframe, в котором будет форма загрузки файла. примерно так делает gmail, когда аттачменты добавляешь.

можно обойтись и без этого. GET параметры гарантированно передадутся, даже если будет превышен размер post_max_size, так что можно в случае наличия файла (это ловиться в JS по onchange) добавлять в action формы GET-параметр с указанием на то, что файл имеет место быть.
 

Фанат

oncle terrible
Команда форума
осталось найти браузер, который это понимает %)
 
Сверху