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

9

Можно ли перенаправить пользователя на file too bigстраницу файла

когда размер POST-запроса превышает указанный лимит?

Я знаю о параметре max-request-size, но он дает только статическую страницу, которая не может быть перегружена.

Я думаю, чтобы создать правило перезаписи, которое принимает

размер содержимого из тела запроса в качестве входных данных и перенаправляет на страницу ошибки

ОБНОВИТЬ

теперь мы используем nginx в качестве внешнего интерфейса. Есть новые предложения?

Jonny
источник

Ответы:

19

Вы должны быть в состоянии сделать это, используя что-то вроде:

server {
  server_name example.com;

  client_max_body_size 10m; # or whatever size limit you want
  error_page 413 /custompage.html; # you can also use a named location here if you like
}
kolbyjack
источник
но это не будет работать с большинством современных браузеров - к сожалению, они не могут обрабатывать 413 должным образом. Итак, я боюсь, что нет решения этой проблемы (ну, если вы не можете исправить все текущие браузеры)
rvs
7
Вы можете изменить код состояния на что угодно с помощью error_page, если вы не хотите возвращать 413 клиенту. error_page 413 = 403 /custompage.html; будет использовать 403, например.
kolbyjack
3

Не забудьте установить post_max_sizeи upload_max_filesizeсоответствующее значение в php.ini.

кванты
источник
Мы не на php.
Джонни
0

Что касается поста @quanta, вы также можете указать меньшее значение в php и использовать php для отображения ошибки и правильного перенаправления. Это можно сделать и на других языках сценариев :-)

jflaflamme
источник
Я не упомянул наш стек на стороне сервера. PHP <> весь мир :)
Джонни