Ogranicz rozmiar przesyłanego pliku i przekieruj użytkownika na stronę błędu, jeśli limit zostanie przekroczony

9

Czy możliwe jest przekierowanie użytkownika do file too bigstrony pliku

kiedy rozmiar żądania POST przekroczy określony limit?

Wiem o opcji maksymalnego żądania, ale daje ona tylko statyczną stronę, której nie można przeciążić.

Zastanawiam się nad stworzeniem reguły przepisywania

rozmiar zawartości z treści żądania jako dane wejściowe i przekierowanie na stronę błędu

AKTUALIZACJA

teraz używamy nginx jako interfejsu. Jakieś nowe sugestie?

jonny
źródło

Odpowiedzi:

19

Powinieneś być w stanie to zrobić za pomocą czegoś takiego:

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
źródło
ale to nie będzie działać z większością współczesnych przeglądarek - niestety nie mogą poprawnie obsługiwać 413. Obawiam się, że nie ma rozwiązania tego problemu (no chyba, że ​​można załatać wszystkie obecne przeglądarki)
rvs
7
Możesz zmienić kod stanu na cokolwiek innego za pomocą error_page, jeśli nie chcesz faktycznie zwracać 413 klientowi. error_page 413 = 403 /custompage.html; użyje na przykład 403.
kolbyjack
3

Nie zapomnij ustawić post_max_sizei upload_max_filesizeodpowiedniej wartości w php.ini.

kwanty
źródło
Nie jesteśmy w php.
jonny
0

Jeśli chodzi o post @quanta, możesz również umieścić niższą wartość w php i użyć php do wyświetlenia błędu i prawidłowego przekierowania. Można go również wykonać w innych językach skryptowych :-)

jflaflamme
źródło
Nie wspomniałem o naszym stosie po stronie serwera. PHP <> cały świat :)
jonny