Activation de la fonctionnalité de téléchargement de fichiers Struts 2

Vous pouvez profiter pleinement de la fonctionnalité de téléchargement de fichiers Struts 2 HCL Commerce. Afin d'utiliser les téléchargements Struts 2, assurez-vous d'avoir activé la fonctionnalité.

Pourquoi et quand exécuter cette tâche

Le téléchargement de fichiers Struts 2 est pris en charge dans HCL Commerce. Cette fonctionnalité utilise l'intercepteur de téléchargement de fichiers pour répondre aux requêtes. Pour plus d'informations, voir https://struts.apache.org/core-developers/file-upload.html.

Procédure

  1. Dans tous les JSP qui demandent des téléchargements de fichiers, spécifiez enctype comme "multipart/form-data" et le nom d'action comme suit :
    <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>
    Remarque :
    • La valeur de la propriété name doit être filename.
    • Vous pouvez également utiliser les balises standard Struts 2.
  2. Définissez l'action dans le fichier de configuration Struts 2.
    <action class="com.ibm.commerce.struts.v2.BaseAction" name="ContractUpload">
    ...
    <param name="parameter">
    your_own_command
    </param>
    </action>
    Remarque :
    • Si la classe appelée dans l'action est BaseAction, vous pouvez l'utiliser dans vos propres commandes en incluant les extraits de code suivants, car il a déjà aidé à incorporer les paramètres de fichier téléchargé dans les propriétés de requête.
      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);
      }
    • La taille maximale du fichier Struts 2 FileUploadInterceptor par défaut est de 2 Mo.

      Pour augmenter la taille des fichiers qui peuvent être téléchargés, la constante struts.multipart.maxSize peut être ajoutée au fichier de configuration Struts 2.

      Par exemple, pour augmenter la maxSize à 10 Mo, ajoutez la ligne suivante à votre fichier de configuration Struts 2 struts-config.xml (struts-wcs-stores-custom.xml) :
      <constant name="struts.multipart.maxSize" value="10000000" />
  3. Écrivez une nouvelle action pour récupérer les informations de fichier téléchargées.
    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;
    }
    }
    Remarque : Les termes mis en évidence dans les méthodes set doivent correspondre exactement au nom du fichier. Si l'action est étendue à partir de BaseAction, appelez la super-méthode correspondante pour définir les informations de fichier. (Dans BaseAction, il ne peut consommer qu'un fichier dont le nom est filename.)
    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;
    }
    }

Résultats

La fonction de chargement de fichier Struts 2 est activée et configurée pour votre site.