fileupload java jsp file-upload struts2 struts-action

java - fileupload - struts 2 carga de archivos sin etiquetas de puntales



fileupload interceptor struts2 (2)

¿Debo utilizar las etiquetas de puntales?

<s:form action="doUpload" method="post" enctype="multipart/form-data"> <s:file name="upload" label="File"/> <s:submit/> </s:form>

para hacer uso de la funcionalidad de carga de archivos que proporciona struts 2? ¿Puedo lograr la misma funcionalidad sin los puntales 2 etiquetas? En caso afirmativo, ¿puedo saber que las convenciones deben incorporarse en acción o en archivos de configuración para lograr lo mismo?


En breve, sí, puedes. Entonces la configuración y las convenciones utilizadas por la acción siguen siendo las mismas.

Si usa la etiqueta <form , debe colocar el valor del atributo de acción con la ruta que se asigna a la acción. ActionMapping más información acerca de cómo funciona el asignador de acción y traduce la ruta al ActionMapping aquí .

En la etiqueta de formulario, debe colocar enctype="multipart/form-data" , de modo que Struts pueda envolver la solicitud http a MultipartRequestWrapper y analizar los datos del formulario. Luego el interceptor fileUpload agrega parámetros al contexto de acción necesario para que el interceptor de params inyecte las propiedades del archivo a la acción que maneja la carga.

El nombre de la etiqueta de input debe corresponderse con el nombre de la propiedad Tipo de File . Es utilizado por ambos interceptores arriba y finalmente el objeto se inyecta a través de OGNL.

Si necesita cargar varios archivos, debe cambiar el tipo de propiedades para poder manejar una colección de objetos. Parece que está hecho en este ejemplo .


offcorse puedes, puedes usar etiquetas HTML,

<s:form action="fileUploadAction" method="post" enctype="multipart/form-data"> <input type="file" name="userImage" id="userImage"/> </s:form>

puede usar struts2-inceptors para hacer cosas como esta de esta manera.

<interceptors> <interceptor name="mylogging" class="com.alw.controller.MyLoggingInterceptor"> </interceptor> <interceptor-stack name="loggingStack"> <interceptor-ref name="mylogging" /> <interceptor-ref name="defaultStack" /> </interceptor-stack> </interceptors> <action name="fileUploadAction" class="xxx.xxx.FileUploadAction" method="filterUploadFile"> <interceptor-ref name="fileUpload"> <param name="maximumSize">2097152</param> </interceptor-ref> <interceptor-ref name="defaultStack"></interceptor-ref> <result name="success">JSP_Pagesxxx.jsp</result/> </action>

y para llevar a cabo la lógica comercial en su clase de acción lo necesita.

public class FileUploadAction extends ActionSupport implements ServletRequestAware { private File userImage; private String userImageContentType; private String userImageFileName; public String filterUploadFile() { if(UserImageFileName()!=null) { // perform your business logic } } }