[Struts] – Limitar el tamaño máximo de los ficheros de subida
En algunas aplicaciones permitimos la subida de archivos de los usuarios al servidor. En algunas aplicaciones existe una limitación en el tamaño de los ficheros por requisitos del sistema o de negocio. Pero siempre debería de estar limitado por razones de seguridad, para evitar que un usuario malintencionado ataque la aplicación subiendo archivos excesivamente pesados. Por defecto, el tamaño máximo está limitado a 250 Megabytes.
Existe una forma muy simple de lograrlo, y es mediante una propiedad del controlador en el struts-config.xml, maxFileSize.
<controller>
<set-property property="maxFileSize" value="1M" />
</controller>
o simplemente
<controller maxFileSize="1M"/>
Esta propiedad admite un valor entero seguido de "K", "M" ó "G" para referirse a kilobytes, megabytes o gigabytes. Sin ningún sufijo se interpreta como bytes. En los dos ejemplos permitimos un máximo de 1 Mega(byte).
Si un usuario intenta subir un fichero de un tamaño mayor al permitido, la propiedad FormFile del formulario (clase ActionForm) llegará a la clase Action como null, y por tanto podemos controlar este evento en nuestra clase Action para lanzar una excepción para avisar al usuario de que su fichero no ha sido subido por sobrepasar el tamaño máximo permitido.
Memoria del servidor utilizada
Por defecto, la memoria que dedicará el servidor a la subida del fichero será 500 Kilobytes. En caso de superar este valor se utilizará otro soporte externo, típicamente el sistema físico de ficheros. Podemos modificar este valor de forma análoga, utilizando la propiedad memFileSize.
<controller maxFileSize="1M" memFileSize="300K"/>
[tags]J2EE, Struts, fileupload, seguridad[/tags]
No related posts.






























Rafa dijo
18 de November del 2009 a las 5:39 pm
Hola,
Estoy probando precisamente lo que comentas y me he dado cuenta que si subes 2 archivos, no te comprueba el tamaño de cada uno, sino la suma de ambos. ¿Sabes como comprobar cada archivo individualmente?
Muchas Gracias,…
yoyoooyoy dijo
18 de November del 2009 a las 8:47 pm
Pues es un gran aporte Rafa.
A ver si saco un rato para preguntarlo. A priori, lo puedes hacer manualmente tú en el controler (picando código en una validación chequeada en tu action) u obligando al usuario a subir los ficheros de uno en uno.