Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: При загрузке файла не отправляется форма
Форумы портала PHP.SU » » Вопросы новичков » При загрузке файла не отправляется форма

Страниц (1): [1]
 

1. Graf_Duku - 12 Января, 2018 - 12:10:46 - перейти к сообщению
Собственно, при загрузке файла через форму, размер которого превышает установленные в php.ini, поля формы не отправляются. Необходимо как-то это перехватить, чтобы вывести сообщения для пользователя, что файл слишком большой.

В логе запись создается вида, но в остольном никаких варнингов в браузере нет:

[12-Jan-2018 09:57:22 UTC] PHP Warning: POST Content-Length of 13007285 bytes exceeds the limit of 5242880 bytes in Unknown on line 0

В какую сторону копать?
2. Строитель - 12 Января, 2018 - 12:47:59 - перейти к сообщению
Graf_Duku, проверяйте значение ключа error (вроде так он называется) в массиве $_FILES
3. Graf_Duku - 12 Января, 2018 - 13:23:16 - перейти к сообщению
Строитель пишет:
Graf_Duku, проверяйте значение ключа error (вроде так он называется) в массиве $_FILES


В том то и дело. Если попробовать прогрузить файл большего объема, то никакие значения из формы не передаются. По ощущениям страница просто обновляется и всё. Соответственно и массив $_FILES пустой.

С файлами в пределах ограничения - нет проблем.
4. Строитель - 12 Января, 2018 - 14:49:37 - перейти к сообщению
Graf_Duku, а в html-форме вы передаёте скрытым атрибутом максимально допустимое значение загружаемого файла? Посмотрите, как тут описано: MAX_FILE_SIZE
5. Graf_Duku - 12 Января, 2018 - 15:23:52 - перейти к сообщению
Строитель пишет:
Graf_Duku, а в html-форме вы передаёте скрытым атрибутом максимально допустимое значение загружаемого файла? Посмотрите, как тут описано: MAX_FILE_SIZE


И так пробовал, и другими извращенными способами. Результат один, форма обновляется и всё.
6. Строитель - 12 Января, 2018 - 15:27:24 - перейти к сообщению
Graf_Duku, на всякий случай не помешало бы опубликовать ваш код.
7. Graf_Duku - 12 Января, 2018 - 15:53:19 - перейти к сообщению
Строитель пишет:
Graf_Duku, на всякий случай не помешало бы опубликовать ваш код.


Код - тестовый, но и он работает с тем же результатом. Пробовал то же самое в голом файле, без .хтаецесса и каких либо инклудов, которые могу вызвать конфликты. БЕз результатов.

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $descrip_text = (isset($_POST["add_doc-descrip"])) ? $_POST["add_doc-descrip"] : "";
  4.  
  5. if (isset($_POST["add_doc-descrip"])){
  6.    
  7.         var_dump($_FILES);
  8.    
  9. }
  10. ?>
  11. <form action="" method="POST" name="add_doc-form" enctype="multipart/form-data">
  12.     <fieldset>
  13.         <legend>Загрузить новый документ в базу:</legend>
  14.  
  15.         <input type="hidden" name="MAX_FILE_SIZE" value="50000">
  16.         <p><textarea name="add_doc-descrip" id="add_doc-descrip" rows="3"><?=$descrip_text?></textarea></p>
  17.         <p class="pos_c"><input type="file" name="add_doc-file" id="add_doc-file"></p>
  18.         <p class="pos_c"><input type="submit" value="Добавить"></p>
  19.        
  20.     </fieldset>
  21. </form>
  22.  
  23.  
8. Sail - 12 Января, 2018 - 22:59:40 - перейти к сообщению
Graf_Duku пишет:
Собственно, при загрузке файла через форму, размер которого превышает установленные в php.ini, поля формы не отправляются. Необходимо как-то это перехватить, чтобы вывести сообщения для пользователя, что файл слишком большой.

В логе запись создается вида, но в остольном никаких варнингов в браузере нет:

[12-Jan-2018 09:57:22 UTC] PHP Warning: POST Content-Length of 13007285 bytes exceeds the limit of 5242880 bytes in Unknown on line 0

В какую сторону копать?

Либо увеличить post_max_size, либо валидация формы... Например: Get File Size before Uploading in JavaScript and jQuery
(Добавление)
Этот "неперехватываемый" warning - не из-за максимального размера файла, а из-за максимального объема передаваемых через POST
9. Graf_Duku - 13 Января, 2018 - 09:16:05 - перейти к сообщению
Sail пишет:
Graf_Duku пишет:
Собственно, при загрузке файла через форму, размер которого превышает установленные в php.ini, поля формы не отправляются. Необходимо как-то это перехватить, чтобы вывести сообщения для пользователя, что файл слишком большой.

В логе запись создается вида, но в остольном никаких варнингов в браузере нет:

[12-Jan-2018 09:57:22 UTC] PHP Warning: POST Content-Length of 13007285 bytes exceeds the limit of 5242880 bytes in Unknown on line 0

В какую сторону копать?

Либо увеличить post_max_size, либо валидация формы... Например: Get File Size before Uploading in JavaScript and jQuery
(Добавление)
Этот "неперехватываемый" warning - не из-за максимального размера файла, а из-за максимального объема передаваемых через POST


Тоесть, это такая механика при обработке загрузки файлов через пост у пхп?

Спасибо за помощь, очень дельный совет. Хватало бы сообщений, кинул бы "спасибо", но увы...
10. Sail - 13 Января, 2018 - 17:24:43 - перейти к сообщению
Graf_Duku пишет:
Тоесть, это такая механика при обработке загрузки файлов через пост у пхп?

Файл - лишь часть данных, передаваемых через POST.
Поэтому в мануале и пишут, что post_max_size должно быть больше значения upload_max_filesize.
Есть ещё функция error_get_last(), которая в данном случае вернет, например:
CODE (htmlphp):
скопировать код в буфер обмена
  1. array (size=4)
  2.   'type' => int 2
  3.   'message' => string 'POST Content-Length of 130291522 bytes exceeds the limit of 83886080 bytes' (length=74)
  4.   'file' => string 'Unknown' (length=7)
  5.   'line' => int 0

Graf_Duku пишет:
Спасибо за помощь, очень дельный совет. Хватало бы сообщений, кинул бы "спасибо", но увы...

К этому действию можно вернуться после достижения ценза Хорошо
11. Graf_Duku - 14 Января, 2018 - 10:50:39 - перейти к сообщению
Sail пишет:
Graf_Duku пишет:
Тоесть, это такая механика при обработке загрузки файлов через пост у пхп?

Файл - лишь часть данных, передаваемых через POST.
Поэтому в мануале и пишут, что post_max_size должно быть больше значения upload_max_filesize.


Цитата:
Если размер POST-данных больше чем post_max_size, суперглобальные переменные $_POST и $_FILES будут пустыми.


Говорила мне мама - "читай мануал...".

В итоге выходит, что страница не перезагружалась, а происходила штатная передача - "ничего", а "ничего" - не обработать. Всем спасибо Подмигивание
12. Sail - 14 Января, 2018 - 15:37:41 - перейти к сообщению
Graf_Duku пишет:
В итоге выходит, что страница не перезагружалась, а происходила штатная передача - "ничего", а "ничего" - не обработать.

Перезагружалась.
13. Graf_Duku - 14 Января, 2018 - 19:14:31 - перейти к сообщению
Sail пишет:
Graf_Duku пишет:
В итоге выходит, что страница не перезагружалась, а происходила штатная передача - "ничего", а "ничего" - не обработать.

Перезагружалась.


Печаль...

 

Powered by ExBB FM 1.0 RC1