2010-02-04 22 views
8

¿Alguien conoce una buena solución para limitar el tamaño de carga de archivos cuando se ejecuta una aplicación Rails con Passenger/mod_rails. La solicitud debe rechazarse de inmediato, para que el archivo no se transfiera al servidor.Límite de tamaño de carga de archivos de rieles

Las soluciones que he encontrado hasta ahora describen cómo parchear Mongrel para implementar una limitación, pero tengo que usar el pasajero con esta aplicación.

Respuesta

9

Es posible limitar el tamaño de subida a través de Apache usando la directiva LimitRequestBody:

<Directory "/var/www"> 
    LimitRequestBody 1024 
</Directory> 

http://httpd.apache.org/docs/1.3/mod/core.html#limitrequestbody

+0

esta es una solución posible. el problema aquí es que apache simplemente abandona la conexión y por eso no es posible mostrar una página de error – Mato

+0

Sí, esta es la validación del lado del servidor y se usa con fines de seguridad. Probablemente deberías usar un script en el lado del cliente para que los usuarios no maliciosos sean notificados en el momento. Si está usando un plugin como 'dropzone' es tan fácil como configurar' maxFilesize' – zehelvion

8

Puedes utilice el siguiente javascript para notificar al usuario que el archivo seleccionado excede el límite máximo. Pero aún así es esencial tener validación del lado del servidor.

$('#id_of_input_file_field').change(function() { 
    if(this.files[0].size > MAX_LIMIT_FOR_FILE){ 
    $('#id_of_input_file_field').val(''); 
    alert('File exceeds maximum size limit ') 
} 
}); 

MAX_LIMIT_FOR_FILE está en el byte así que si quieres configurar límite máximo de 1Mb entonces el valor de MAX_LIMIT_FOR_FILE debe ser 1048576