Limite el tamaño del archivo de carga y redirija al usuario a la página de error si el límite excede

9

¿Es posible redirigir al usuario a la file too bigpágina del archivo?

cuando el tamaño de la solicitud POST excede el límite especificado?

Soy consciente de la opción max-request-size, pero solo proporciona una página estática que no se puede sobrecargar.

Estoy pensando en crear una regla de reescritura que tome

tamaño del contenido del cuerpo de la solicitud como entrada y redirige a la página de error

ACTUALIZAR

ahora usamos nginx como front-end. ¿Alguna sugerencia nueva?

jonny
fuente

Respuestas:

19

Deberías poder hacer esto usando algo como:

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
fuente
pero esto no funcionará con la mayoría de los navegadores modernos, desafortunadamente no pueden manejar 413 correctamente. Por lo tanto, me temo que no hay ninguna solución a este problema (bueno, a menos que pueda parchear todos los navegadores actuales)
rvs
77
Puede cambiar el código de estado a cualquier otra cosa con error_page si no desea devolver 413 al cliente. error_page 413 = 403 /custompage.html; usará 403, por ejemplo.
kolbyjack
3

No olvide establecer post_max_sizey el upload_max_filesizevalor correspondiente en php.ini.

quanta
fuente
No estamos en php.
jonny
0

Con respecto a la publicación @quanta, también puede poner un valor más bajo en php y usar php para mostrar el error y realizar la redirección correctamente. Se puede hacer en otros lenguajes de secuencias de comandos también :-)

jflaflamme
fuente
No mencioné nuestra pila del lado del servidor. PHP <> mundo entero :)
jonny