Son muchas las cosas que cambian en la nueva versión de Struts, entre ellas está la manera de subir ficheros.
Desde una jsp, mediante el componente s:file que renderiza una caja con selector de ficheros, se sube al servidor el fichero que el usuario elija. Struts lo convierte a un fichero tmp que guardará en el directorio raíz de la aplicación en el servidor, por lo tanto en el Action debemos, además de recuperar el fichero, saber su nombre y extensión para poder devolverlo a su forma original.
Por pasos:
1. En la jsp pondremos tantos
<s:file name="documento">
como documentos queramos subir (en este ejemplo haremos referencia al fichero como “documento”). Todos los componentes s:file deben tener el mismo nombre.
Además, en el formulario en el que se incluyan esos componentes, hay que añadir el atributo
enctype="multipart/form-data"
2. En el Action declararemos dos propiedades
private File documento; private String documentoFileName;
o
private File[]documento; private String[] documentoFileName;
si vamos a subir más de un fichero. Hay que prestar atención a la convención de nombres, el nombre de la propiedad que contenga el fichero tiene nombre libre, pero el nombre de la que contiene el nombre del fichero debe estar formado por el nombre de la primera propiedad seguido por FileName.
Además se deben declarar sus correspondientes get y set.
3. En struts.xml añadir a la lista de interceptores el que se encarga de la subida de ficheros
<interceptor-ref name="fileUpload"/>
para que este interceptor funcione, debemos añadir a las librerías de la aplicación los jar: commons-fileupload-x.x.x.jar y commons-io-x.x.x.jar