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

  1. 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.
  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" />
  3. 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étodos set deben coincidir exactamente con el nombre del archivo. Si la acción se amplía desde BaseAction, llame al supermétodo correspondiente para establecer la información de archivo. (En BaseAction, 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;
    }
    }

Resultados

La característica de subida de archivos Struts 2 está habilitada y configurada para el sitio.