Curso de Struts 2 | Cómo subir un fichero 1

Curso de Struts 2
Cómo subir un fichero

Curso de Struts 2 | Cómo subir un fichero 2

En esta lección aprenderás cómo implementar la funcionalidad para subir archivos en una aplicación web desarrollada con Struts 2. Además, exploraremos cómo personalizar formularios con etiquetas adicionales como el combobox.

index.jsp

El formulario para subir archivos debe usar el atributo enctype="multipart/form-data". Utilizaremos la etiqueta <s:file> para crear el campo de entrada para el archivo.

<%@taglib prefix="s" uri="/struts-tags" %>
<html>
	<head><title>Struts2 File Upload Example</title></head>
	<body>
		<s:actionerror/>
		<s:fielderror/>
		<s:form action="UploadMyFile" enctype="multipart/form-data" method="POST">
			<s:file name="uploadFile" label="Please select a file to upload"></s:file>
			<s:submit></s:submit>
		</s:form>
	</body>
</html>
  • <s:file>: Crea un campo para seleccionar el archivo.
  • enctype="multipart/form-data": Permite enviar datos binarios (como archivos) en el formulario.

struts.xml

Configuramos la acción UploadFile para manejar la subida de archivos. Usamos el interceptor fileUpload para definir restricciones como el tipo y tamaño del archivo.

<action name="UploadMyFile" class="com.pablomonteserin.action.FileUploadAction">
	<interceptor-ref name="defaultStack">
		<param name="fileUpload.allowedTypes">text/plain,image/png,image/gif,image/jpeg</param>
		<param name="fileUpload.maximumSize">200000</param>
	</interceptor-ref>
	<result name="success">/uploadedFile.jsp</result>
</action>
  • fileUpload.allowedTypes: Define los tipos de archivos permitidos (texto e imágenes en este ejemplo).
  • fileUpload.maximumSize: Establece el tamaño máximo en bytes (200 KB aquí).
  • defaultStack: Incluye el interceptor de subida de archivos dentro de la pila predeterminada de Struts.

FileUploadAction.java

La clase Action recibe los datos del archivo subido, incluyendo el contenido, el nombre del archivo y el tipo MIME.

//Habría que poner los getters y setters de fileSize(long), uploadFileFileName(String) y uploadFile(File)
public String execute() throws Exception {
	String filePath = "/home/monty/Desktop/"+uploadFileFileName;
	File newFile = new File(filePath);
	FileUtils.copyFile(uploadFile, newFile);
	return SUCCESS;
}
  • uploadFile: Recibe el contenido del archivo subido.
  • uploadFileFileName: Almacena el nombre del archivo.
  • FileUtils.copyFile: Copia el archivo subido al directorio deseado (en este caso, /home/montey/docs/).

combobox tag

Si necesitas incluir un combobox en el formulario, utiliza la etiqueta <s:combobox> para generar una lista desplegable.

Ejemplo de combobox:

<s:combobox label="My Favourite Color" name="myFavouriteColor"
            list="{'red':'Red','green':'Green','blue':'Blue'}"
            headerKey="-1" headerValue="--- Please Select ---"
            emptyOption="true" value="green" />

Combobox dinámico:

<s:combobox name="persona" label="Select a person"
            list="personas" headerKey="-1" headerValue="--- Please Select ---"
            listKey="id" listValue="nombre" />
  • list: Obtiene los datos dinámicamente desde la clase Action.
  • listKey y listValue: Establecen la clave y el valor que se mostrarán al usuario.

Conclusión

La subida de archivos en Struts 2 es sencilla y personalizable, permitiendo controlar aspectos como los tipos de archivo y el tamaño máximo. Además, etiquetas como <s:combobox> añaden flexibilidad a los formularios. ¡Es tu turno de probar estas funcionalidades en tu proyecto! 🚀