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
-
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.
-
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" />
- Si la classe appelée dans l'action est
-
É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éthodessetdoivent correspondre exactement au nom du fichier. Si l'action est étendue à partir deBaseAction, appelez la super-méthode correspondante pour définir les informations de fichier. (DansBaseAction, 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; } }