La spécification Servlet 3.0 HttpServleRequest a fourni une méthode pour gérer les téléchargements de fichiers, mais ces téléchargements doivent être effectués dans le servlet. Struts2 fournit un package plus simple.
Struts2 utilise le cadre de téléchargement de fichiers Common-FileUpload de Jakarta par défaut. Par conséquent, en utilisant la fonction de téléchargement de fichiers de Struts2, vous devez ajouter deux packages JAR, à savoir commons-io-2.2.jar et commons-fileupload-1.3.1.jar.
Struts2 Exemple de téléchargement de fichiers Simple:
1. Page de téléchargement de fichiers
Afin de télécharger des fichiers, la méthode du formulaire doit être définie sur la publication et l'ENCTYPE est défini sur les données multipART / Form. Une fois que l'EnCType est défini sur les données multipart / formulaires, le navigateur utilisera des flux binaires pour traiter les données de formulaire.
<% @ taglib prefix = "s" uri = "/ struts-tags"%> <% - créé par Intellij Idea. Utilisateur: Date d'administrateur: 2018/1/16 Heure: 14:06 Pour modifier ce modèle Utilisez le fichier | Paramètres | Modèles de fichiers .--%> <% @ page ContentType = "Text / Html; charSet = UTF-8" Language = "Java"%> <Html> <A-Head> <Title> Struts2 File Upload </ Title> </ Head> <Body> <S: Formation Action = "File_upload" Méthode = "Post" Encype = "Multial Label = "SELECT Fichier" /> <S: Soumider Value = "Upload" /> </ S: Form> </ Body> </Html>
2. Traitez l'action de la demande de téléchargement
/ ** * Description: Struts2 Upload de fichiers simples * Auteur: Eleven * Date: 2018/1/24 10:39 * / public class FileAction étend ActionSupport {// Upload Fichier Private Fichier Upload; // Télécharger le type de fichier String privé UploadContentType; // Téléchargez le nom de fichier Private String uploadFileName; // Télécharger le fichier Téléchargement ALLOTATTYPES; Private String AllowTypes est réglé dynamiquement dans strut.xml en utilisant la balise param dans strut.xml; page de chaîne publique () {return "page"; } public void upload () {// upload: // 1. Lisez le contenu du fichier // 2. Écrivez le contenu de fichier dans le fichier spécifié try {System.out.println ("File upload perled type =" + allowtypes); String realPath = servletActionContext.getServletContext (). GetRealPath ("/ upload"); System.out.println ("Path absolu du projet =" + realPath); // Créez le nouveau fichier de fichier SAVETORY NOUVEAU (realPath) .mkdir (); File file = new File (realPath + "/" + uploadFileName); // Créer if (! File.exists ()) {file.createenewfile (); } FileOutputStream out = new FileOutputStream (fichier); FileInputStream dans = new FileInputStream (upload); octet [] tampon = nouveau octet [1024]; int len = 0; // Écrivez en lisant et en écrivant 1KB à chaque fois, écrivez 1kb while ((len = in.read (tampon))> 0) {out.write (tampon, 0, len); } System.out.println ("Fichier Téléchargez avec succès ..."); } catch (exception e) {e.printStackTrace (); }} public File getUpload () {return upload; } public void setupload (fichier upload) {this.upload = upload; } public String getUploadContentType () {return uploadContentType; } public void setuploadContentType (String uploadContentType) {this.uploadContentType = uploadContentType; } public String getUploadFileName () {return uploadFileName; } public void setuploadFileName (string uploadFileName) {this.uploadFileName = uploadFileName; } public String getAllowTypes () {return allowtypes; } public void setallowTypes (String AllowtyPes) {this.AllowTypes = allowTypes; }}Si le formulaire contient un champ de fichiers avec l'attribut de nom xxx, l'action correspondante doit utiliser trois variables de membre pour résumer les informations du champ de fichier.
La variable membre xxx du fichier de type résume le contenu de fichier correspondant au champ de fichier.
La variable membre XXXFileName de Type String résume le nom de fichier du fichier correspondant au champ de fichier.
La variable membre XXXContentType de la chaîne de type résume le type de fichier du fichier correspondant au champ de fichier.
3. Configurer les struts.xml
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype Struts public "- // APache Software Foundation // Dtd Struts Configuration 2.3 // en" "http://struts.apache.org/dtds/struts-2.3.dtd"> <spertts> <ankery name = "Struts.enable.DynAMIC Value = "false" /> <constante name = "struts.devmode" value = "true" /> <package name = "default" namespace = "/" extends = "struts-default"> <! - File upload -> <action name = "file_ *" method = "{1}"> <result name = "page"> / web-inf / jsp / fichier. Voici un exemple pour définir le type qui permet les téléchargements de fichiers, mais le programme d'action ne fait pas beaucoup de traitement -> <param name = "allowtypes"> image / png, image / gif, image / jpeg </param> </action> </package> </rutts>Interceptor implémente le filtrage des fichiers
Struts2 fournit un intercepteur pour le téléchargement de fichiers, Fileupload. Pour que cet intercepteur fonctionne, la référence d'intercepteur doit être configurée dans l'action.
Lors de la configuration d'un intercepteur Fileupload, vous pouvez spécifier deux paramètres pour celui-ci:
AllowTypes: le type de fichier a permis d'être téléchargé, séparé par plusieurs types de fichiers avec des virgules anglaises
MaximumSize: la taille du fichier a permis d'être téléchargée, en octets.
Lorsque le filtrage des fichiers échoue, le système se transfère automatiquement vers la vue logique d'entrée, de sorte que la vue logique nommée l'entrée doit être configurée pour cette action. De plus, la référence interceptor de DefaultStack doit être configurée pour cette action comme affiché.
Le fichier de configuration de strut.xml est le suivant:
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype Struts public "- // APache Software Foundation // Dtd Struts Configuration 2.3 // en" "http://struts.apache.org/dtds/struts-2.3.dtd"> <spertts> <ankery name = "Struts.enable.DynAMIC value = "false" /> <constante name = "strut.devmode" value = "true" /> <package name = "default" namespace = "/" extend name = "FileUpload"> <! - Type de fichier autorisé -> <param name = "ALLERDTYPES"> image / png, image / gif, image / jpeg </ param> <! - Size de fichier autorisé -> <param name = "MAXIMUMSIZE"> 2000 </pue> </ Interceptor-Ref> <result name = "input"> / web-inf / jsp / input.jsp </ result> <result name = "page"> / web-inf / jsp / fileupload.jsp </sult> </ action> </ package> </rutts>
L'intercepteur de téléchargement de fichiers configuré ci-dessus nécessite que le type de téléchargement de fichiers ne peut être qu'un fichier image, et la taille du fichier ne peut pas être supérieure à 2000 octets. Si le fichier téléchargé est trop grand ou si le type ne correspond pas, il passera à la vue logique d'entrée.
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.