Im Allgemeinen sind die Formularelemente bei der Verwendung von Servlet zur Verarbeitung von Formelementen. Wenn das Formular jedoch mehr als nur einen einfachen Text enthält, z. B. das Hochladen von Dateifeldern, ist es immer noch eine sehr komplizierte Aufgabe, jeden Unterteil des zusammengesetzten Formulars direkt vom HTTPServletRequest-Objekt zu analysieren.
Um die Verarbeitung von "Multipart/Form-Data" -Typdaten zu vereinfachen, können entsprechende Komponenten zur Verarbeitung verwendet werden, die viel Codierung sparen, die Wiederverwendung unterstützen und auch sehr effizient sind.
Es gibt auch einige Java -Komponenten: FileUpload, SmartUpload, COS usw. Dieser Artikel erläutert es mit dem FileUpload von Apache.
Um FileUpload zu verwenden, sollten Sie zuerst die entsprechende Komponente herunterladen:
1.FileUpload -Paket: http://commons.apache.org/fileeupload/
2.IO -Paket: http://commons.apache.org/io/
Entpacken Sie nach dem Herunterladen das ZIP-Paket und kopieren Sie Commons-fileUpload-1.2.1.jar und Commons-i-i-1.
1.
<html> <Head> <titels> Upload </title> </head> <body> <form name = "uploadForm" methode = "post" engTePe = "MultiPart/Form-Data" action = "Upload"> <Tabelle> <tr> <td> <div align = "rechts"> u. </td> </tr> <tr> <td> <div align = "rechts"> Upload -Datei hochladen1: </div> </td> <td> <Eingabe type = "Datei" name "Datei1" size = "30"/> </td> </tr> <tr> <tr> <tr> <td> <td> <td> <td> <td> <td> <td> <td> <td> <td> <td> <td> <Td> <Td> <td> upload ". name = "file2" size = "30"/> </td> </tr> <tr> <td> <Eingabe type = "surenden" name = "value =" upload "> </td> <td> <Eingabe type =" reset "name =" reset "value =" reset "> </td> </tra> </table> </Form> </Form> </Form> </Form> </Form> </Form> </Form> </Form> </body> </body> </body> </body> </body> </body> </body> </body> </body> </body> </body>
2. Servlet -Verarbeitungsformular - UploadServlet
Paket mypack; import Javax.servlet.*; import Javax.servlet.http.*; import Java.io. UploadServlet erweitert httpServlet {private String filepath; // Verzeichnis, in dem hochgeladene Dateien private String tempfilepath sind; // Verzeichnis, in dem temporäre Dateien öffentliche void init (servletConfig config) gespeichert werden, löst ServletException {Super.init (config) aus; filepath = config.getInitParameter ("filepath"); tempfilepath = config.getInitParameter ("tempfilepath"); filepath = getServletContext (). getRealPath (filepath); tempfilepath = getServletContext (). getRealPath (tempfilepath); } public void dopost (httpServletRequest -Anforderung, httpServletResponse -Antwort) löst ServletException aus, ioException {response.setContentType ("text/plain"); // Antwortkörper an den Client -Printwriter Outnet = Antwort.getWriter (); Versuchen Sie {// Erstellen Sie ein fest diskutiertes FileItem Factory diskFileItemFactory factory = new diskFileItemfactory (); // Setzen Sie die Größe des Puffers, das verwendet wird, um Daten auf die Festplatte zu schreiben. // Setzen Sie die temporäre Verzeichnisfabrik.setRepository (neue Datei (tempfilepath)); // Erstellen Sie eine Datei hochladen Prozessor servletFileUpload upload = new ServletFileUpload (factory); // Setzen Sie die maximale Größe der Datei, die hochgeladen werden darf. Hier ist 4M hochladen. SetSizemax (4*1024*1024); List / * FileItem * / items = upload.ParSerequest (Anfrage); Iterator iter = items.iterator (); while (iter.hasnext ()) {FileItem item = (FileItem) iter.next (); if (item.isformfield ()) {processFormfield (item, outnet); // ordentliche Formularfelder} else {processUploadedDfile (Element, OutNet); // Upload -Dateien}} outNet.close () addload -Dateien verarbeiten; } catch (Ausnahme E) {neue servleTexception (e) werfen; }} private void ProcessFormField (FileItem -Element, Printwriter -Outnet) {String name = item.getFieldName (); String value = item.getString (); outnet.println (name+":"+value+"/r/n"); } private void processUploadedFile (FileItem -Element, Printwriter -Outnet) löst Ausnahme aus {String -Dateiname = item.getName (); int index = Dateiname.lastIndexof ("//"); Dateiname = Dateiname.substring (Index+1, Dateiname.length ()); long FileSize = item.getSize (); if (fileName.equals ("") && fidesize == 0) return; Datei UploadedFile = neue Datei (FilePath+"/"+Dateiname); item.write (hochgeladene Datei); outnet.println (Dateiname+"wird gespeichert."); outNet.println ("Die Größe von"+Dateiname+"ist"+filesize+"/r/n"); }} Das Servlet ist in web.xml konfiguriert wie:
<servlet> <servlet-name>upload</servlet-name> <servlet-class>mypack.UploadServlet</servlet-class> <init-param> <param-name>filePath</param-name> <param-value>store</param-value> </init-param> <init-param> <param-name>tempFilePath</param-name> <param-value> temp </param-value> </init-param> </dien
Zu diesem Zeitpunkt wurde eine einfache Datei -Upload -Funktion ausgeführt - greifen Sie auf die Formularseite zu, wählen Sie die Datei aus und klicken Sie auf die Datei hochladen. Wenn Sie die Datei beim Hochladen der Datei auf den Server in der Datenbank speichern möchten, können Sie den Dateinamen in der Datenbank speichern, nachdem Sie den Dateinamen erhalten haben, damit Sie die Datei des Benutzers in Zukunft entsprechend dem Dateinamen auswählen können!
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.