Die Servlet 3.0 -Spezifikation httpServletRequest hat eine Methode zum Verarbeiten von Datei -Uploads bereitgestellt. Solche Uploads müssen jedoch im Servlet durchgeführt werden. Struts2 bietet ein einfacheres Paket.
Struts2 verwendet standardmäßig Jakartas COMMOME-FILEUPLOAD-Datei-Upload-Framework. Daher müssen Sie mithilfe der Datei-Upload-Funktion von Struts2 zwei JAR-Pakete hinzufügen, nämlich Commons-io-2.2.jar und Commons-fileUpload-1.3.1.jar.
Struts2 Einfaches Datei -Upload -Beispiel:
1. Datei -Upload -Seite
Um Dateien hochzuladen, muss die Methode des Formulars auf Post gesetzt und der EncTTEPE auf Multipart/Form-Data gesetzt werden. Sobald der EngeTepe auf Multipart/Form-Data eingestellt ist, verwendet der Browser Binärströme, um Formulardaten zu verarbeiten.
<%@ taglib prefix = "s" uri = "/Struds-tags"%> <%-Erstellt von Intellij IDEA. Benutzer: Administrator Datum: 2018/1/16 Zeit: 14:06 Um diese Vorlage zu ändern, verwenden Sie Datei | Einstellungen | Dateivorlagen .--%> <%@ page contentType = "text/html; charset = utf-8" Sprache = "java"%> <html> <kopf> <titels> Struts2 Einfache Datei-Upload von Datei-Upload </title> </head> <S: form action = "file" file "method". label = "Datei auswählen"/> <s: value = "hochladen"/> </s: Formular> </body> </html>
2. Verarbeiten Sie die Aktion der Upload -Anfrage
/** * Beschreibung: Struts2 Einfacher Datei -Upload * Autor: elf * Datum: 2018/1/24 10:39 */Public Class Fileaction erweitert die AktionSverpackung {// Datei private Datei hochladen; // Dateityp hochladen private Zeichenfolge UploadContentType; // Dateiname private Zeichenfolge hochladen uploadFileName; // Datei hochladen addload zulässig; private String -Zulassungstype werden dynamisch in Struts.xml unter Verwendung des Param -Tags in Struts.xml eingestellt. public String page () {return "Seite"; } public void upload () {// Upload: // 1. Lesen Sie den Dateiinhalt // 2. Schreiben Sie den Dateiinhalt in die angegebene Datei Try {System.out.println ("Datei -Upload zugelassen type ="+duldtypes); String realPath = servletActActionContext.getServletContext (). GetRealPath ("/upload"); System.out.println ("Absolute Pfad des Projekts ="+RealPath); // Erstellen Sie das Dateiverzeichnis neue Datei (RealPath) .mkdir (); Datei Datei = neue Datei (RealPath+"/"+UploadFileName); // create if (! File.exists ()) {file.createNewFile (); } FileOutputStream out = new FileOutputStream (Datei); FileInputStream in = new FileInputStream (Upload); byte [] buffer = neues byte [1024]; int len = 0; // Schreiben Sie beim Lesen und Schreiben von 1 KB jedes Mal 1 KB, während ((len = in.read (puffer))> 0) {out.write (Buffer, 0, len); } System.out.println ("Datei erfolgreich hochladen ..."); } catch (Ausnahme e) {e.printstacktrace (); }} öffentliche Datei getUpload () {return upload; } public void setUpload (Datei -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 getAwalltypes () {return erlangttyp; } public void setAlytypes (String -duldtypes) {this.Allowtypes = duldtypes; }}Wenn das Formular ein Dateifeld mit Namensattribut XXX enthält, muss die entsprechende Aktion drei Mitgliedsvariablen verwenden, um die Informationen des Dateifelds zu verkapulieren.
Die XXX -Mitgliedsvariable der Type -Datei entspricht den Dateiinhalt, der dem Feld Datei entspricht.
Die xxxFileName -Mitgliedsvariable des Typs Zeichenfolge verkauft den Dateinamen der Datei, die dem Feld Datei entspricht.
Die xxxContentType -Mitgliedsvariable der Typ -Zeichenfolge verkauft den Dateityp der Datei, die dem Feld Datei entspricht.
3. Konfigurieren Sie Struts.xml
<? value = "false"/> <constant name = "struts.devMode" value = "true"/> <package name = "Standard" namespace = "/" extends = "struts-default"> <!-Datei Upload-> <actionname = "file_*" methode = "{1}"> <resultname = "actum. Eigenschaften. Hier ist ein Beispiel, um den Typ zu setzen, der Dateien -Uploads ermöglicht. Das Aktionsprogramm ermöglicht jedoch nicht viel Verarbeitung -> <param name = "duldtypes"> Bild/PNG, Image/GIF, Image/JPEG </param> </action> </package> </struts>Interceptor implementiert die Dateifilterung
Struts2 bietet einen Interceptor für das Datei -Upload, FileUpload. Damit dieser Interceptor -Arbeitsabschnitt die Interceptor -Referenz in der Aktion konfiguriert werden muss.
Bei der Konfiguration eines Datei -Pload -Interceptor können Sie zwei Parameter dafür angeben:
Zulassentype: Der Dateityp, der hochgeladen werden darf, durch mehrere Dateitypen mit englischen Kommas getrennt werden
MaximumSize: Die Dateigröße, die in Bytes hochgeladen werden darf.
Wenn die Dateifilterung fehlschlägt, überträgt das System automatisch in die logische Eingabeansicht, sodass die logische Ansicht benannte Eingabe für diese Aktion konfiguriert werden muss. Darüber hinaus muss die Interceptor -Referenz von DefaultStack für diese Aktion wie angezeigt konfiguriert werden.
Die Konfigurationsdatei von Struts.xml lautet wie folgt:
<? value = "false" /> <constant name = "struts.devMode" value = "true" /> <package name = "Standard" namespace = " /" extends = "struts-default"> <!-Datei-Upload-> <Action name = "File_*" methode = "{1}"> <! name = "fileUpload"> <!-erlaubte Dateityp-> <param name = "duldtypes"> bild/png, Bild/Gif, Bild/JPEG </param> <!-erlaubte Dateigröße-> <param name = "maximalSize"> 2000 </param> </interceptor-ref> <!-system-standhautstapfen-system-standhaut-interceptor-> </</param> </ref-rref> <!-Konfiguration systemstaplaugt-standhaut-interceptor-> </> </</</</> </> </</</</> </</</</</</> </</</</</</<)-> </> </</</</</> </</</</> </</</< Seite-> <Ergebnisname = "input">/webinf/jsp/input.jsp </result> <result name = "page">/webinf/jsp/fileUpload.jsp </result> </action> </package> </struts>Der oben konfigurierte Datei -Upload -Interceptor erfordert, dass der Datei -Upload -Typ nur eine Bilddatei sein kann und die Dateigröße nicht mehr als 2000 Bytes betragen kann. Wenn die hochgeladene Datei zu groß ist oder der Typ nicht übereinstimmt, steigt sie zur logischen Eingabeansicht.
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.