Das Datei -Upload ist in Webanwendungen sehr häufig. In der Java -Webumgebung ist es sehr einfach, Datei -Upload -Funktion zu implementieren, da in Java bereits viele Komponenten für das Upload des Datei im Internet entwickelt wurden. In diesem Artikel wird die am meisten Commons-FileUpload-Komponente als Beispiel verwendet, um zu demonstrieren, wie Sie Java-Webanwendungen zu einer Datei-Upload-Funktion hinzufügen.
Die Commons-fileUpload-Komponente ist eines der Open-Source-Projekte von Apache und kann von http://commons.apache.org/FileUpload/ heruntergeladen werden. Diese Komponente ist einfach und einfach zu bedienen, sodass Sie jeweils eine oder mehrere Dateien hochladen und die Dateigröße begrenzen können.
Entpacken Sie nach dem Herunterladen das ZIP-Paket und kopieren Sie Commons-fileUpload-1.x.jar in Tomcat's WebApps/Ihr WebApp/web-inf/lib/. Wenn das Verzeichnis nicht vorhanden ist, erstellen Sie bitte Ihr eigenes Verzeichnis.
Erstellen Sie ein neues UploadServlet.java für das Datei -Upload:
Paket com.liaoxuefeng.web; öffentliche Klassen -DateiE -PloadServlet erweitert HttpServlet {private String uploadDir = "C: // temp"; @Override Protected void dopost (httpServletRequest req, httpServletResponse resp) löst ServletException aus, IoException {// Todo:}}Wenn das Servlet die vom Browser ausgestellte Postanforderung erhält, implementiert es das Upload des Datei -Uploads in der Dopost () -Methode. Wir müssen den FileItemiterator durchqueren und jeden FileItemStream erhalten:
@OverrideProtected void dopost (httpServletRequest req, httpServletResponse resp) löst ServletException aus, ioException {try {servletFileUpload Upload upload = new ServLetFileUpload (); // MAX -Dateigröße auf 1 MB festlegen: upload.setFilesimax (1024 * 1024); FileItemiterator it = upload.getItemiterator (req); // mit jeder Datei verarbeiten: while (it.hasnext ()) {FileItemStream item = it.next (); if (! item.isformfield ()) {// Es handelt sich um eine Datei -Upload: handleItem (item); }} req.getRequestDispatcher ("success.jsp"). Forward (req, resp); } catch (FileUploadexception e) {neue servleTexception ("Datei nicht hochladen", e); }}Lesen Sie den Eingangsstrom von hochgeladenen Dateien in der Methode "HandleItem ()) und schreiben Sie ihn dann in UploadDir, und der Dateiname wird von UUID zufällig generiert:
void handleFileItem (FileItemStream item) löscht IOException {System.out.println ("Datei hochladen:" + item.getName ()); Datei NewuploadFile = neue Datei (UploadDir + "/" + uUid.randomuuid (). ToString ()); byte [] buffer = neues byte [4096]; InputStream input = null; OutputStream output = null; try {input = item.openStream (); output = new bufferedOutputStream (neuer FileOutputStream (Newuploadfile)); für (;;) {int n = input.read (puffer); if (n == (-1)) brechen; output.write (puffer, 0, n); }} endlich {if (input! = null) {try {input.close (); } catch (ioException e) {}}}Wenn Sie den angegebenen Upload -Ordner in der Konfigurationsdatei web.xml lesen möchten, können Sie ihn in der Init () -Methode initialisieren:
@Overridepublic void init (ServletConfig config) löst ServletException {Super.init (config) aus; this.uploaddir = config.getInitParameter ("Dir");}Konfigurieren Sie schließlich das Servlet in web.xml:
<? <servlet-name>UploadServlet</servlet-name> <servlet-class>com.liaoxuefeng.web.FileUploadServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>UploadServlet</servlet-name> <url-pattern>/upload</url-pattern> </servlet-mapping></web-app>
Starten Sie nach dem Konfigurieren des Servlets Tomcat oder Harz und schreiben Sie einen einfachen Index.htm -Test:
<html> <body> <p> FileUploadServlet Demo </p> <Formular name = "Form1" action = "upload" methode = "post" engType = "MultiPart/Form-Data"> <Eingabe type type = "Datei" name = "Datei"/> </> </html-
Beachten Sie, dass Action = "Upload" die Zuordnungs -URL des FileUploadServlets angibt, mit dem hochgeladene Dateien verarbeitet werden.
Wenn das Upload erfolgreich ist, wird Success.jsp angezeigt, da ansonsten eine Ausnahme ausgelöst wird. Wenn die hochgeladene Dateigröße 1 MB überschreitet, werden wir eine DateisizeelimitexceedEdException erhalten.
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.