Derzeit gibt es zwei häufig verwendete Methoden für das Hochladen von Dateien. Einer ist SmartUpload und der andere ist Apache's Commons FileUpload .
Hier stellen wir hauptsächlich die Verwendung des zweiten vor. Zunächst müssen Sie die Datei hochladen und auf mehrere Probleme achten:
1 Fügen Sie im Formularformular Speicherplatz hinzu <Eingabe type = "Datei" name = "myFile">
2 Das Inhaltsformat der Formularform sollte als Mehrteil-/Form-Daten-Format definiert werden
3 Erforderliche Klassenbibliothek: 1 Commons-io.jar 2 Commons-fileUpload-1.3.1.jar
Schauen wir uns als nächstes einen Blick auf die Verwendung.
Lesen Sie zunächst die offizielle Dokumentation von Apache Commons FileUpload und finden Sie die folgenden häufig verwendeten Funktionen:
1 Erstellen Sie ein Datei -Parsing -Objekt
Die Codekopie lautet wie folgt: diskFileUpload diskFileUpload = new diskFileUpload ();
2 Stecken Sie sie nach der Analyse der Datei in die Liste. Da diese Klassenbibliothek mehrere Dateien -Uploads unterstützt, wird das Ergebnis in der Liste gespeichert.
Die Codekopie lautet wie folgt: List <FileItem> list = diskFileUpload.ParSerequest (Anfrage);
3 Erhalten Sie hochgeladene Dateien und führen Sie eine Analyse durch (nicht erforderlich)
Die Codekopie lautet wie folgt: Datei remoteFile = neue Datei (neuer String (FileItem.getName (). GetBytes (), "utf-8"));
4 Erstellen Sie ein neues Objekt und führen Sie Streaming -Kopien durch
Datei1 = neue Datei (this.getServletContext (). getRealPath ("Anhang"), remoteFile.getName ()); Datei1.getParentFile (). Mkdirs (); Datei1.CreateNewFile (); InputStream Ins = FileItem.getInputStream (); OutputStream OUS = new FileOutputStream (Datei1); try {byte [] buffer = new byte [1024]; int len = 0; while ((len = Ins.Read (Puffer))> -1) ous.write (Puffer, 0, Len); out.println ("Datei speichern"+Datei1.getabsolutepath ()+"<br/>"); } endlich {ous.close (); Ins.CLOSE (); }Auf diese Weise vervollständigen wir das Hochladen der Datei.
FileUpload.html
<form action = "servlet/uploadServlet" methode = "post" engType = "MultiPart/Form-Data"> <div align = "center"> <fieldset> <legend> Upload-Datei hochladen </legend> <br/> <div align = "links"> Upload-Datei1 </divaInn = "links"> links "> links"> upload-Datei) </div align = "> </"> "> links"> upload-Datei "upload-Datei". name = "file1"/> </div> <div align = "links"> upload file2 </div> <div Align = "links"> <Eingabe type = "Datei" name = "Datei2"/> </div> <div> <div> <div Align = 'links'> Upload -Datei -Anweisungen für die Datei Upload -Anweisungen 1//Div Align = '> <input'> <Eingabe -Typ ". align='left'>Upload file instructions2</div> <div align='left'><input type="text" name="description2"/></div> </div> <div> <div align='left'> <input type='submit' value="upload file"/> </div> </fieldset> </div> </form>
web.xml
<servlet> <Servlet-name> uploadServlet </Servlet-name> <Servlet-Class> com.test.hello.UploadServlet </Servlet-Class> </Servlet> <Servlet-Mapping> <Servlet-name> UploadServlet </servlet-name> <Url-Patter>/Servlet/Upload </URL-PATTER> </servlet-hermpattern
UploadServlet.java
Paket com.test.hello; import java.io.file; import Java.io.fileOutputStream; Import Java.io.ioxception; Import Java.io.inputStream; import Java.io.outputStream; Import Java.io.printwriter; Import Java.util.List; javax.servlet.http.httpServlet; import javax.servlet.http.httpsertRequest; import Javax.servlet.http.httpServletRespect; importieren org.apache.commons.FileUpload.diskfileUpload; org.apache.commons.FileUpload.FileUploadexception; Public Class UploadServlet erweitert HttpServlet { /*** Konstruktor des Objekts. */ public uploadServlet () {super (); } /*** Zerstörung des Servlets. <br> */ public void destroy () {Super.Destroy (); // Füllt nur "zerstören" String in Protokoll // Geben Sie Ihren Code hier ein} /*** Die DoGet -Methode des Servlets. <br> * * Diese Methode wird aufgerufen, wenn ein Formular seine Tag -Wert -Methode entspricht. * * @Param Anfrage Die vom Client vom Server gesendete Anforderung * @param Antwort Die vom Server vom Client gesendete Antwort an den Client * @throw servletException, wenn ein Fehler aufgetreten ist * @throws ioException, wenn ein Fehler aufgetreten ist */ public void dagget (httpServletRequest-Anforderung, httpletResponse-Antwort) utfletException, ioexception {Response.ScharacterCodierung): Antwort.getWriter (). println ("Bitte laden Sie die Datei in Post hoch"); } /*** Die Dopost -Methode des Servlets. <br> * * Diese Methode wird aufgerufen, wenn ein Formular seine Tag -Wert -Methode entspricht. * * @Param Anfrage Die Anforderung Die vom Client gesendete Anforderung an den Server * @Param -Antwort Die vom Server an den Client gesendete Antwort * @Throws ServletException Wenn ein Fehler aufgetreten ist * @Throws IOException Wenn ein Fehler aufgetreten ist ServleTException, IOException {Datei file1 = null, file2 = null; String Beschreibung1 = NULL, Beschreibung2 = NULL; response.setcharactercoding ("utf-8"); request.setcharactercoding ("utf-8"); response.setContentType ("text/html"); Printwriter out = response.getWriter (); DiskFileUpload diskFileUpload = new diskFileUpload (); try {list <FileItem> list = diskFileUpload.ParSerequest (Anfrage); out.println ("Alle FileItems übertragen ... <br/>"); für (FileItem FileItem: List) {if (FileItem.isformfield ()) {if ("Beschreibung1" .Eequals (FileItem.getfieldName ()) {out.println ("Übertragung zu Beschreibung 1 ... <br/>"); Beschreibung1 = neuer String (FileItem.getString (). getByTes (), "utf-8"); } if ("Beschreibung2" .Equals (FileItem.getfieldName ()) {out.println ("Reise zu Beschreibung 2 ... <br/>"); Beschreibung2 = neuer String (FileItem.getString (). getByTes (), "utf-8"); }} else {if ("file1" .equals (FileItem.getFieldName ()) {Datei remoteFile = new Datei (neuer String (FileItem.getName (). getBytes (), "utf-8"); out.println ("Reise zu Datei1 ... <br/>"); out.println ("Client -Dateisposition:"+remoteFile.getabsolutepath ()+"<br/>"); Datei1 = neue Datei (this.getServletContext (). getRealPath ("Anhang"), remoteFile.getName ()); Datei1.getParentFile (). Mkdirs (); Datei1.CreateNewFile (); InputStream Ins = FileItem.getInputStream (); OutputStream OUS = new FileOutputStream (Datei1); try {byte [] buffer = new byte [1024]; int len = 0; while ((len = Ins.Read (Puffer))> -1) ous.write (Puffer, 0, Len); out.println ("Um die Datei zu speichern"+Datei1.getabsolutepath ()+"<br/>"); } endlich {ous.close (); Ins.CLOSE (); }} if ("file2" .equals (FileItem.getfieldName ()) {Datei remoteFile = new Datei (neuer String (FileItem.getName (). getByTes (), "utf-8"); out.println ("Reise zu Datei2 ... <br/>"); out.println ("Client -Dateisposition:"+remoteFile.getabsolutepath ()+"<br/>"); Datei2 = neue Datei (this.getServletContext (). getRealPath ("Attachment"), RemoteFile.getName ()); File2.GetParentFile (). mkdirs (); File2.CreateNewFile (); InputStream Ins = FileItem.getInputStream (); OutputStream OUS = new FileOutputStream (Datei2); try {byte [] buffer = new byte [1024]; int len = 0; while ((len = Ins.Read (Puffer))> -1) ous.write (Puffer, 0, Len); out.println ("Datei speichern"+file2.getabsolutepath ()+"<br/>"); } endlich {ous.close (); Ins.CLOSE (); }}} out.println ("Anfrage Parsing wird abgeschlossen <br/> <br/>"); }} catch (FileUploadexception e) {} out.println ("<! docType html public/"-// w3c // dtd html 4.01 transitional // en/">"); out.println ("<kopf> <titels> a servlet </title> </head>"); out.println ("<body>"); if (file1! = null) {out.println ("<div>"); out.println ("<div align = 'links'> file1; </div>"); out.println ("<div align = 'links'> <a href = '"+request.getContextPath ()+"/contode/"+file1.getName ()+"' target = _blank>"+file1.getName ()+"</a>"); out.println ("</div>"); out.println ("</div>"); } if (file2! = null) {out.println ("<div align = 'links'> file2; out.println ("<div align = 'links'> <a href = '"+request.getContextPath ()+"/contode/"+file2.getName ()+"' target = _blank>"+file2.getName ()+"</a>"); out.println ("</div>"); out.println ("</div>"); } out.println ("<div>"); out.println ("<div align = 'links'> Beschreibung1: </div>"); out.println ("<div align = 'links'>"); out.println (Beschreibung1); out.println ("</div>"); out.println ("</div>"); out.println ("</div>"); out.println ("<div align = 'links'> Beschreibung2: </div>"); out.println ("<div align = 'links'> Beschreibung2: </div>"); out.println ("<div align = 'links'>"); out.println ("</div>"); out.println ("</div>"); out.println ("</body>"); out.println ("</html>"); out.flush (); out.close (); } /*** Initialisierung des Servlets. <br> * * @throw servletException Wenn ein Fehler auftrittAuslaufbeispiel
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.