Hier verwende ich Servlet-basierte Dateien Asynchrone Upload. Ich sage nicht viel Unsinn und lade den Code einfach hoch. . .
Paket com.future.zfs.util; import Java.io.file; import Java.io.ioException; Import Java.io.printwriter; import Java.util.iterator; import Java.util.List; Import Javax.Servlet.ServletException; Import Javax.Servlet.httplet.httplet. javax.servlet.http.httpServletRequest; importieren javax.servlet.http.httpservletResponse; import org.apache.commons.FileUpload.FileItem; importieren org.apache.commons.fileupload.FileUploadexception; org.apache.commons.FileUpload.FileUploadbase.sizelimitexceedException; import org.apache.commons.FileUpload.disk.diskFileTemFactory; Import org.apache.commons.FileUpload.Servlet.ServletFileUpLoads -Dateiunterladung. erweitert HttpServlet {Final Long max_size = 10 * 1024 * 1024; // Setzen Sie die maximal hochgeladene Datei auf 10 m // Liste der Dateiformate, die zugelassen werden können, endgültig string [] deglyTtype = new String [] {"jpg", "jpeg", "gif", "txt", "doc", "docx", "mp3", "wma", "m4a", "xls"}; public FileUploadServlet () {Super (); } public void destroy () {Super.Destroy (); } @Override Protected void Service (httpServletRequest -Anforderung, httpServletResponse -Antwort) löst ServletException aus, ioException {response.setContentType ("text/html"); // Setzen Sie die Zeichencodierung auf UTF-8, so dass die chinesische Zeichen Reaktion aufweist. // eine Festplattendateifabrik instanziieren, um die hochladungskomponenten servletFileUpload diskFileItemFactory dfif = new diskFileTemfactory () zu konfigurieren; dfif.setSizethreshold (4096); // Stellen Sie die Speichergröße fest, die zum Vorladungsdateien vorübergehend gespeichert wird. Wenn Sie Dateien hochladen, ist dies 4K. Mehr als der Teil wird vorübergehend in der Festplatte dfif.setrepository (neue Datei (Request.getRealPath ("/") + "UploadTemp"); // Setzen Sie das Verzeichnis ein, in dem temporäre Dateien gespeichert sind. // Setzen Sie die maximale Uploadgröße sfu.setsizemax (max_size); Printwriter out = response.getWriter (); // Erhalten Sie eine Liste aller Upload -Felder aus der Anforderungsliste filelist = null; try {filelist = sfu.parsequest (Anfrage); } catch (FileUploadexception e) {// Dateigröße zu groß handeln. zurückkehren; } e.printstacktrace (); } // keine Datei hochladen if (filelist == null || filelist.size () == 0) {out.println ("{message: 'Bitte auswählen Sie die Datei hochladen'}"); zurückkehren; } // Alle hochgeladenen Dateien iterator fileitr = filelist.iterator () abrufen; // Alle Dateien while (Fileitr.hasnext ()) {FileItem FileItem = null; String path = null; lange Größe = 0; // Erhalten Sie den aktuellen FileItem = (FileItem) FileItr.Next (); // Ignoriere das Feld einfacher Form anstelle der Dateidomäne der hochgeladenen Domäne (<Eingabe type = "text" /> usw.) if (FileItem == null || fileItem.isformfield ()) {Fortsetzung; } // den vollständigen Pfad des Datei path = fileItem.getName () abrufen; // Erhalten Sie die Dateigröße size = fileItem.getSize (); if ("" .Equals (Pfad) || size == 0) {out.println ("{message: 'Bitte auswählen Sie die Datei hochladen'}"); zurückkehren; } // den Dateinamen des entfernten Pfad string t_name = path.substring (path.lastindexof ("//") + 1) abrufen; // Die Dateierweiterung abrufen (der vollständige Name wird ohne Erweiterung erhalten) String t_ext = t_name.substring (t_name.lastindexof (".") + 1); // den Dateityp außerhalb des angegebenen Dateiformates intalFlag = 0 verweigern; int aalerTextCount = duldtype.length; für (; erlaubig <erlaubtextCount; duldFlag ++) {if (deglyType [duldFlag] .Eequals (t_ext)) break; } if (erlaubteflag == erlaubtextCount) {String message = ""; für (erlaubteflag = 0; erlaubig <erlaubtextCount; duldFlag ++) {message+= "*.". + duldtype [dingFlag] + ""; } out.println ("{message: 'Bitte lade die folgende Art von Datei hoch"+meldung+"'}"); zurückkehren; } long Now = System.currentTimemillis (); // den Dateinamen generieren, der nach dem Upload gemäß den Systemzeitzeichenfolge präfix = string.valueof (jetzt) gespeichert ist; // Der vollständige Pfad der gespeicherten endgültigen Datei wird im Upload -Verzeichnis im Root -Verzeichnis des Web u_name = request.getrealPath ("/") + "Upload/" + Präfix + "gespeichert. + t_ext; // Der Original -Dateiname path = request.getrealPath ("/") + "Upload/" + Pfad; try {// FileItem.write (neue Datei (Pfad)) speichern; response.setStatus (200); out.println ("{message:/" Datei erfolgreich hochladen. Speichert als: " + Präfix +". " + t_ext +" Dateigröße: " + size +" byte/"}"); } catch (Ausnahme e) {e.printstacktrace (); }}}} web.xml
<servlet> <servlet-name>fileUploadServlet</servlet-name> <servlet-class>com.future.zfs.util.FileUploadServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>fileUploadServlet</servlet-name> <url-pattern>/fileUploadServlet</url-pattern> </Servlet-Mapping>
Seite hochladen
<%@ page Language = "java" contentType = "text/html; charset = utf-8" pageCoding = "utf-8"%> <! docType html public "-// w3c // dtd html 4.01 transitional // en" "http://www.w3.org/tr/html4/loose.dtd"> <html> <kopf> <meta http-equiv = "content-type" content = "text/html; charset = utf-8"> <titels> hier </title> </title> </title> <script = "type =" src = "js/jQuery.js"> </script> <script type = "text/javaScript" src = "js/ajaxFileUpload.js"> </script> <script type = "text/javaScript"> Funktion AjaxFileUpload () {$ ("#). Zeigen Sie ein Bild an, wenn Sie mit dem Hochladen der Datei beginnen. Der Datei -Upload -Speicherplatz <Eingabe type = "Datei" id = "Datei" name = "file"/> dataType: 'json', // Der Rückwerttyp wird im Allgemeinen auf JSON -Erfolg eingestellt: Funktion (Daten, Status) // Der Server reagiert erfolgreich auf die Verarbeitungsfunktion {//alert(data.message) If (typeof (data.Error)! = 'Undefined') {if (data.Error! $ ('#myspan'). html (Data.Message); } else {//alert(data.message); $ ('#myspan'). html (Data.Message); }}}, Fehler: Funktion (Daten, Status, e) // Server -Reaktionsfehlerhandlingsfunktion {// alert (e); $ ('#myspan'). html (e); }}) return false; } </script> </head> <body> <img src = "bilder/lade.gif" id = "laden" style = "display: keine;"> <span style = "color: rot;" id = "myspan"> </span> <br/> <Eingabe type = "Datei" id = "Datei" name = "Datei"/> <br/> <Eingabe type = "button" value = "upload" onclick = "return ajaxFileUpload (); </body> </html> Es ist zu beachten, dass Sie bei der Verwendung von AjaxFileUpload zum Hochladen auf dem Servlet die Antwort festlegen müssen. Obwohl DataType: 'JSON' auf JSON eingestellt ist, müssen Sie die Antwort einstellen. SetContentType ("Text/HTML"); Andernfalls können die vom Server zurückgegebenen Daten nicht erhalten werden und ein Dialogfeld wird angezeigt.
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.