Lo que no me mata, me fortalece
F. Nietzsche

[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]

También te puede interesar:

  • [Struts] – no Cache Si queremos que ninguna página de nuestra aplicación basada en Struts almacene los datos introducidos por el usuario en ellas (lo que se entiende por...
  • [Struts] – Control de Acceso El problema del control de acceso dentro de una aplicación web es habitual en las aplicaciones web. Es muy habitual comprobar que existe un objeto...
  • [Struts] – Subir un fichero al servidor Requisitos  Es normal que en algunas aplicaciones web se permita subir/eliminar archivos al servidor. Por ejemplo, subir la foto del empleado en un portal corporativo...
  • [Struts] – Excepciones manejando objetos en el Formulario Recordando lo que había escrito en otro post anterior, podemos utilizar objetos en los formularios de Struts para simplificar el manejo de los datos en...
  • [Struts Validator] – input en struts-config.xml Si queremos que Struts valide automáticamente un formulario, debemos indicarlo en la declaración de nuestro action en struts-config.xml, mediante validate="true". Entonces Struts ejecutará las validaciones...

2 Comentarios hasta el momento »

  1. 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,…

  2. 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.

Comentarios RSS · TrackBack URI

Dejanos tu Comentario

Nombre: (Requerido)

E-Mail: (Requerido)

Sitio WEB:

Comentario:

Comenta