Das Bild -Upload und das Upload von Bilddateien sind im Wesentlichen gleich und das Bild selbst ist auch eine Datei. Das Datei -Upload soll Bilder auf den Server hochladen. Obwohl es viele Möglichkeiten gibt, geht es bei der zugrunde liegenden Implementierung um das Lesen und Schreiben von Dateien.
Dinge zu beachten
1. Das Formular muss das Attribut EngeTePe = "Multipart/Form-Data" schreiben.
2. Um sicherzustellen, dass die Datei erfolgreich hochgeladen werden kann, muss der Namensattributwert der Dateisteuerung mit dem von Ihnen übermittelten Kontrollschicht -Variablennamen übereinstimmen.
Wenn der Space -Name beispielsweise eine Datei ist, müssen Sie ihn im Hintergrund definieren
private Dateidatei; // Dateisteuerungsname private Zeichenfolge fileContentType; // Bildtyp privater String -Dateifile -DateifileName; //Dateiname
1.JSP Seite
<%@ page Language = "java" contentType = "text/html; charset = utf-8" pageCoding = "utf-8"%> <! docType html public "-// w3c // dtd html 4.01 transitional // en" http://www.w.w.w.w.w.w.w.w.w3. <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta http-equiv="pragma" content="no-cache" /> <base target="_self"> <title>File Upload</title> </head><body><form method="post" action="" EncTTYPE = "MultiPart/Form-Data"> <Eingabe type = "Datei" name = "Datei" value = "Datei"> <Eingabe type = "value =" identifizieren "> </form> </body> </html>
1. Controller, der für Seitendaten eingereicht werden muss
Paket com.cpec.tang.chemical.action; import java.io.file; import Java.io.ioException; import Java.util.random; import Javax.annotation org.apache.struts2.servletactactacontext; import org.springframework.stereotype.controller; import com.cpec.tang.chemical.biz.lunbobiz; import Com.cpsec.tang.chemical.entity.image; erweitert actionupport { / ** * * / private statische endgültige long serialversionuid = 1l; @Resource (name = "lunbobiz") Private Lunbobiz Lunbobiz; privates Bildbild; private Dateidatei; // Dateisteuerungsname private Zeichenfolge fileContentType; // Bildtyp privater String -Dateifile -DateifileName; // Dateiname private Ganzzahlnummer; public String findImage () {image = lunbobiz.findimage (); Erfolgserfolg; } public String alternage () {image = lunbobiz.findimage (); Erfolgserfolg; } public String alternage1 () {httpServletRequest Request = ServletActionContext.getRequest (); String root = request.getRealPath ("/upload"); // Der Serverpfad, zu dem das Bild hochgeladen werden soll [] = FileFileName.split ("//."); String Dateiname = ""; if (names.length> = 1) {Dateiname = getrandomstring (20)+"."+names [names.length-1]; } String picpath = "Upload/"+Dateiname; // Pfad des im Datenbankdatei gespeicherten Bilds. try {FileUtils.copyFile (Datei, neue Datei (Datei1, Dateiname)); }} catch (ioException e) {e.printstacktrace (); } Return Success; } /*Eine zufällige Zeichenfolge erhalten* /public String getRandomstring (int Länge) {// Länge zeigt die Länge der generierten String -String -Base = "abcdefghijklMnopqrstuvwxyz0123456789 an"; Random random = new random (); StringBuffer sb = new StringBuffer (); für (int i = 0; i <länge; i ++) {int number = random.Nextint (Base.Length ()); sb.Append (base.charat (number)); } return sb.toString (); }}Dies soll Dateien durch das Kopieren hochladen, und es gibt andere Möglichkeiten
Methode 2
@Controller ("ContractAction") Public Class ContractAction erweitert die AktionSverpackung. // Der Name der Eingabesteuerung muss Datei sein // Dateiname Collection Private String -DateifileName hochladen. // Dateiinhaltstyp hochladen Collection Private Zeichenfolge FileContentType; privater String -Dateiname; public string upload () löscht FilenotFoundException, IOException {String path = uploadFile (); // Der Pfad zur Dateispeicherdatenbank -Rückgabeerfolg; } // Die Upload -Funktion upload @SuppressWarnings ("Abschaltung") public String uploadFile () löscht FileNotFoundException aus, iOException {try {inputStream in = new FileInputStream (Datei); String Dir = ServletActionContext.getRequest (). GetRealPath (UploadDir); Datei filelocation = new Datei (DIR); // Sie können das Ziel -Upload -Verzeichnis für das Ziel auch im Anwendungsroot -Verzeichnis manuell erstellen, wenn (! Filelocation.exists ()) {boolean isCreated = filelocation.mkdir (); if (! iscreated) {// erstellt hat das Ziel -Upload -Verzeichnis nicht erstellt, eine andere Verarbeitung kann durchgeführt werden, z. B. eine benutzerdefinierte Ausnahme usw. Diese Situation sollte normalerweise nicht auftreten. null zurückkehren; }} // this.setFileFileName (getRandomstring (20)); String [] name = this.getFileFileName (). Split ("//."); String Dateiname = getRandomstring (20)+"."+Name [name.length-1]; this.setFileFileName (Dateiname); System.out.println (Dateiname); Datei UploadFile = neue Datei (DIREname); OutputStream out = new FileOutputStream (UploadFile); byte [] buffer = neues byte [1024 * 1024]; int Länge; while ((länge = in.read (puffer))> 0) {out.write (puffer, 0, länge); } in.close (); out.close (); return uploadDir.substring (1)+"//"+fileFileName; } catch (FilenotFoundException ex) {return null; } catch (ioException ex) {return null; }} public static String getrandomstring (int länge) {string str = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789"; Random random = new random (); StringBuffer sb = new StringBuffer (); für (int i = 0; i <länge; i ++) {int number = random.nextint (62); sb.Append (str.charat (number)); } return sb.toString (); }} Zusätzlich zum Einzelbild -Upload gibt es mehrere Image -Uploads, und die Prinzipien sind gleich
Paket com.cpec.tang.chemical.action; import Java.io.file; import Java.io.FileInputStream; importieren java.io.filenotfoundException; importieren java.io.fileoutputStream; importieren java.io.ioException; importieren java.io.inputstream; importieren java.io.outputstream; import Java.util.list; import javax.servlet.http.httpServletRequest; import org.apache.struts2.ServletActionContext; "/hochladen"; // Dateisammlung private Liste <Datei> Datei hochladen; // Dateiname Sammlung private Liste <string> FileFileName; // Dateiinhaltstyp hochladen Sammlung private Liste <string> fileContentType; öffentliche Liste <Datei> getFile () {Rückgabedatei; } public void setFile (Liste <Datei> Datei) {this.File = Datei; } publiclist <string> getFileFileName () {return FileFileName; } public void setFileFileName (Liste <string> fileFileName) {this.FileFileName = FileFileName; } publiclist <string> getFileContentType () {return fileContentType; } public void setFileContentType (list <string> fileContentType) {this.fileContentType = fileContentType; } public String uploadForm () löst Ausnahme aus {httpServletRequest request = servletActionContext.getRequest (); String webpath = null; // PATH für (int i = 0; i <file.size (); i ++) {// Loop Jede Datei UploadFile (i) hochladen; webpath = "upload/"+this.getFileFileName (). Get (i); } return "Erfolg"; } // Führen Sie die Upload -Funktion Private String uploadFile aus (int i) FileEnotFoundException, IOException {try {inputStream in = new FileInputStream (Datei.get (i)); String Dir = ServletActionContext.getRequest (). GetRealPath (UploadDir); Datei filelocation = new Datei (DIR); // Hier können Sie auch das Ziel -Upload -Verzeichnis für das Ziel im Anwendungswurzelverzeichnis manuell erstellen, wenn (! Filelocation.exists ()) {boolean isCreated = filelocation.mkdir (); if (! iscreated) {// Wenn das Ziel -Upload -Verzeichnis für das Ziel erstellt wird, kann eine andere Verarbeitung durchgeführt werden, z. B. eine benutzerdefinierte Ausnahme usw. Diese Situation sollte nicht eintreten. null zurückkehren; }} String -Dateiname = this.getFileFileName (). Get (i); Datei UploadFile = neue Datei (DIREname); OutputStream out = new FileOutputStream (UploadFile); byte [] buffer = neues byte [1024 * 1024]; int Länge; while ((länge = in.read (puffer))> 0) {out.write (puffer, 0, länge); } in.close (); out.close (); return uploadFile.toString (); } catch (FilenotFoundException ex) {return null; } catch (ioException ex) {return null; }}}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.