Habilitar la característica de subida de archivos de Struts 2
Puede sacar el máximo provecho de la característica de subida de archivos de Struts 2 HCL Commerce. Para utilizar las cargas de Struts 2, asegúrese de que ha habilitado la prestación.
Por qué y cuándo se efectúa esta tarea
La subida de archivos de Struts 2 está soportada en HCL Commerce. Esta característica utiliza el interceptor de subida de archivos para cumplir solicitudes. Para obtener detalles, consulte https://struts.apache.org/core-developers/file-upload.html.
Procedimiento
-
En cualquier JSP que solicite la carga de archivos, especifique enctype como "multipart/form-data" y el nombre de acción como se indica a continuación:
<form enctype="multipart/form-data" method="post" name="uploadForm" action="ContractUpload" target="NAVIGATION" id="uploadForm"> ... <input name="filename" type="file" size="50" id="ContractImportPanel_FormInput_filename_In_uploadForm_1" /> ... </form>
Nota:- Es necesario que el valor de la propiedad name sea filename.
- También puede utilizar etiquetas estándar de Struts 2.
-
Defina el archivo de configuración de Struts2.
<action class="com.ibm.commerce.struts.v2.BaseAction" name="ContractUpload"> ... <param name="parameter"> your_own_command </param> </action>
Nota:- Si la clase llamada en la acción es
BaseAction
, puede utilizarla en sus propios mandatos incluyendo los fragmentos de código siguientes, ya que ya ha ayudado a incorporar los parámetros de archivo cargados en las propiedades de petición.UploadedFile uploadedFile = null; TypedProperty reqProperties = (TypedProperty) request.getAttribute(ECConstants.EC_DECRYPTEDREQPROP); Object uploadedFileObj = reqProperties.get(ECConstants.EC_UPLOADED_FILE, null); if (uploadedFileObj != null) { uploadedFile = (UploadedFile) reqProperties.get(ECConstants.EC_UPLOADED_FILE); }
- El tamaño de archivo máximo de 2 FileUploadInterceptors predeterminados es de 2 MB.
Para aumentar el tamaño de los archivos que se pueden cargar, la constante struts.multipart.maxSize se puede añadir al archivo de configuración de Struts 2.
Por ejemplo, para aumentar maxSize a 10 MB, añada la línea siguiente al archivo de configuración struts-config.xml (struts-wcs-stores-custom.xml) Struts 2:<constant name="struts.multipart.maxSize" value="10000000" />
- Si la clase llamada en la acción es
-
Escriba una nueva acción para recuperar la información de archivo subido.
import java.io.File; import com.opensymphony.xwork2.ActionSupport; public class BaseAction extends ActionSupport { private File file; private String contentType; private String filename; public void setFileUpload(File file) { this.file = file; } public void setFileUploadContentType(String contentType) { this.contentType = contentType; } public void setFileUploadFileName(String filename) { this.filename = filename; } public String execute() { //... return SUCCESS; } }
Nota: Los términos resaltados en los métodosset
deben coincidir exactamente con el nombre del archivo. Si la acción se amplía desdeBaseAction
, llame al supermétodo correspondiente para establecer la información de archivo. (EnBaseAction
, solo puede consumir un archivo cuyo nombre sea nombre_archivo.)public void setFileUpload(File file) { super.setFilename(file); this.file = file; } public void setFileUploadContentType(String contentType) { super.setFilenameContentType(contentType); this.contentType = contentType; } public void setFileUploadFileName(String filename) { super.setFilenameFileName(filename); this.filename = filename; } public String execute() { //... return SUCCESS; } }