Dieser Artikel teilt den spezifischen Implementierungscode zum Hochladen und Herunterladen von Strus2 -Dateien für Ihre Referenz. Der spezifische Inhalt ist wie folgt
1. Datei -Upload
Laden Sie die von Struts eingereichte Dateikomponente hoch.
Rezeption:
1) Einreichungsmethode Post
2) Formulartyp Multipart/Form-Data
3) Eingabetyp = Datei
Hinter der Bühne:
Datei -pload -Komponente von Apache bereitgestellt
Kernkategorie:
FileItemFactory FileItem Factory
ServletFileUpload -Kernklasse für das Datei -Upload im Servlet
FileItem verkauft die Informationen der hochgeladenen Formulardateielemente. Kurz gesagt, das Datei -Upload ist problematischer zu verarbeiten.
Struts 'Datei -Upload <BR /> Datei -Upload -Interceptor hilft uns, die Funktion der verspäteten Datei -Upload -Funktion zu erhalten
<interceptor name = "fileUpload"/>
upload.xml
<Struts> <package name = "upload_" extends = "struts-default"> <!-Hinweis: Das Schlüsselwort "Datei-pload" kann nicht mit dem Schlüsselwort "FileUpload" verwendet werden-> <Action name = "FileUploadAction"> <!-Einschränken Sie die hochgeladenen Arten von Dateien-> <param-ref name = "DefaultStack"> <! name = "FileUpload.AllowedExtensions"> txt, jpg, jar </param> <!-Beschränken Sie die Arten von Dateien, die gleichzeitig verwendet werden. name = "input">/e/error.jsp </result> </action> </package> </struts>
Upload.jsp
<body> <form action = "$ {pageContext.request.contextPath}/FileUploadAction" methode "post" engType = "MultiPart/Form-Data"> Benutzername: <input type = "text" name = "Benutzername"> <br/> Datei: <Eingabe type type ". </body>error.jsp
<body> error.jsp <br/> <!-Alle Fehlermeldungen anzeigen, die während der Laufzeit im Struts-Framework generiert wurden-> < %@ taglib uri = "/struts-tags" prefix = "S" %> <s: fielderror> </s: fielderror> </body> schres.jsp <body> schres.jsp </body>
Kerncode
FileUpload .class
öffentliche KlassendateiEUpload erweitert actionupport {// entsprechendes Formular: <input type = "Datei" name = "file1"> private Dateidatei1; // Dateiname private String -Datei1FileName; // Dateityp (mime) private String -Datei1ContentType; public void setFile1 (Dateidatei1) {this.File1 = Datei1; } public void setFile1FileName (String -Datei1FileName) {this.File1FileName = Datei1FileName; } public void setFile1ContentType (String -Datei1ContentType) {this.File1ContentType = Datei1ContentType; } @Override public String execute () löst eine Ausnahme aus {/********* Die hochgeladene Datei abrufen und es verarbeiten ******* // Die Datei in das Upload -Verzeichnis hochladen // das hochgeladene Verzeichnis Pfad String path = servletActionContext.getServletContext (). // Erstellen Sie die Zieldateidatei destfile = neue Datei (Pfad, Datei1FileName); // die hochgeladene Datei in die Zieldateiutils.copyFile (Datei1, Destfile) kopieren; Erfolgserfolg; }} Datei -Upload -Verarbeitungsdetails
A. Dateigrößenbegrenzung
Das maximale Datei -Upload von Structs wird standardmäßig 2m und durch Konstanten geändert:
<!-4. Ändern Sie die maximale Größe der hochgeladenen Dateien auf 30 m->
<Constant name = "stolzs.multipart.maxSize" value = "31457280"/>
B. Beschränken Sie den zulässigen Typ von hochgeladenen Dateien: Nur Datei -Interceptors mit TXT/JPG -Suffixen sind zulässig: Inject -Parameter in die Begrenzung von Datei -Uploadtypen injizieren
<!-Einschränken Sie den hochgeladenen Dateityp-> <Interceptor-ref name = "defaultStack"> <!-Die Erweiterung der laufenden Datei einschränken-> <param name = "FileUpload.AllowedExtensions"> txt, JPG, Jar </param> <!-Die Art der Datei, die zum gleichen Zeitpunkt verwendet wird, [Params verwendet. name = "FileUpload.AllowedTypes"> text/plain </param>-> </interceptor-ref>
2. Laden Sie die Datei herunter
Download der Struts -Datei, 2 Wege:
Methode 1: Schreiben Sie Byte -Stream -Daten in den Browser über das Antwortobjekt; Legen Sie die Response Header -Methode zum Download 2: Struts -Methode ein
Laden Sie die Struts -Datei herunter:
Kopieren Sie den Code wie folgt: <result-type name = "stream"/>
Bitte beachten Sie zunächst, dass Sie im Webroot -Verzeichnis einen neuen Upload -Ordner erstellen und die Datei, die Sie für den heruntergeladenen Ordner zur Verfügung stellen möchten, eingeben.
upload.xml
<action name="down_*" method="{1}"> <!-- List display--> <result name="list">/e/list.jsp</result> <!-- Download operation--> <result name="download" type="stream"> <!-- The type of file running download: Specified as all binary file types--> <param name="contentType">application/octet-stream</param> <!-- The corresponding attribute in Action: Geben Sie die Eigenschaft des Streams zurück. name = "bufferSize"> 1024 </param> </result> </action>list.jsp
<body> <table align = "center"> <tr> <td> Nummer </td> <td> Dateiname </td> <td> Operation </td> </td> < %@tglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %> <c: foreach " items = "$ {Dateinamen}" varstatus = "vs"> <tr> <td> $ {vs.Count} </td> <td> $ {Dateiname} </td> <td> <!-bauen a url-> <c: url var = "url" value = "down_down" value = "$ {Dateiname}"> </c: param> </c: url> <a href = "$ {url}"> herunterladen </a> </td> </tr> </c: foreach> </table> </body>Downaktion
/***Datei -Download*1. Zeigen Sie die Liste aller zu heruntergeladenen Dateien an*2. Datei -Download** /öffentliche Klassen -DownloadAction erweitert actionupport { /***************** 1. Zeigen Sie die Liste aller Dateien an, die heruntergeladen werden sollen. // Verzeichnisobjektdatei = neue Datei (Pfad); // Erhalten Sie den Dateinamen aller Dateien, die für Zeichenfolge heruntergeladen werden sollen [] Dateinams = Datei.List (); // ActionContext ac = actionContext.getContext () speichern; // Die Karte abrufen, die die Anforderung (die Second Way) Map <String, Object> Request = (Map <String, Object>) ac.get ("Request") darstellt; request.put ("Dateinamen", Dateinamen); Rückgabe "Liste"; } /**************** 2. Datei -Download ******************************/ // 1. Erhalten Sie den Dateinamen der Datei, die private Zeichenfolge heruntergeladen werden soll. public void setFileName (String-Dateiname) {// Behandle das Problem in den übergebenen Parametern (Einreichung abrufen) try {Dateiname = new String (Dateiname.getBytes ("ISO8859-1"), "UTF-8"); } catch (unportedenCodingException e) {neue runimeexception (e) werfen; } // this.FileName = Dateiname; } // 2. Laden Sie die eingereichte Geschäftsmethode herunter (konfigurieren Sie den Stream in Struts.xml) public String Down () löst eine Ausnahme aus {return "download"; } // 3. Methoden zur Rückgabe von Dateistream Public InputStream getAtTrinputStream () {return servletActionContext.getServletContext (). } // 4. Laden Sie den angezeigten Dateinamen herunter (Dateiname vom Browser) public String getdownFileName () {// Chinesische Codierung ist erforderlich, try {FileName = urlencoder.enCode (Dateiname, "UTF-8"); } catch (unportedenCodingException e) {neue runimeexception (e) werfen; } return Dateiname; }}Das Obige dreht sich alles um diesen Artikel, ich hoffe, es wird für das Lernen aller hilfreich sein.