Ich werde nicht viel Unsinn sagen, ich werde Ihnen den Code einfach veröffentlichen. Der spezifische Code lautet wie folgt:
Der HTML -Code lautet wie folgt:
<body> <input id = "fileId" type = "file" accept = "Video/*; capture = camera" onchange = "onfile (this)"> <input id = "btn" type = "button" value = "subly"> <script type = "text/javaScript"> var xhr; Funktion OnFile (Datei) {var fd = New FormData (); document.getElementById ('fileId'). Dateien [0]); xhr = new xmlhttprequest (); xhr.open ("post",, "http: // localhost: 8889/testup/upserservlet"); // xhr.setRequestheader ("Content-Type", "charset = utf-8"); 4) {alert ("Enddatenstream -Ende hochladen"); if (xhr.status == 200) {var infor = xhr.responsetext; alert ("Server -Seite response ="+infor);}}} </script> </body>Der Java -Code sieht so aus:
Paket com.yjm.up; import java.io.file; import Java.io.fileOutputStream; Import Java.io.ioxception; import Java.io.inputstream; import Java.util.list; Import Javax.Servlet.ServletException; Import Javax.Servlet.Http.htp.htp.htp.htplet; javax.servlet.http.httpServletRequest; import javax.servlet.http.httpsertresponse; import org.apache.commons.FileUpload.FileItem; import org.apache org.apache.commons.FileUpload.servlet.servletFileUpload; öffentliche Klasse upserservlet erweitert HttpServlet (public void dopost (httpServletRequest, httpservletrespectRection) löst ServletException, IOException {//. Nicht direkten Zugriff von der äußeren Welt zulassen, um die Sicherheit der hochgeladenen Datei String SavePath = this.getServletContext () zu gewährleisten. {System.out.println (SavePath + "Das Verzeichnis ist nicht vorhanden, muss erstellt werden"); // Erstellen Sie die Verzeichnisdatei. DiskFileItemfactory (); // 2. Erstellen Sie eine Datei hochladen parser servletFileUpload Upload = new ServletFileUpload (Factory); // Lösen Sie die chinesischen hochgeladenen Upload. Daten auf traditionelle Weise abrufen;} // 4. Verwenden Sie den ServletFileUpload -Parser, um die hochgeladenen Daten zu analysieren. Das Analyseergebnis gibt eine Liste <DileItem> Sammlung zurück. Jedes FileItem entspricht dem Eingabeelement einer Formularformularliste <DileItem> list = upload.ParSequest (Anfrage); für (FileItem-Element: Liste) {// Wenn die Daten eines normalen Eingabelements im FileItem if (item.isformfield ()) {String name = item.getFieldName (); // Lösen Sie das chinesische verstümmelte Problem der Daten der normalen Eingabelemente String-Wert = item.getString ("Utf-8"); String (value.getBytes ("ISO8859-1"), "utf-8"); Dateiname.trim (). Equals ("")) {Fortsetzung;} // Hinweis: Die von verschiedenen Browsern übermittelten Dateinamen sind unterschiedlich. Einige Browser senden Dateien mit Pfaden wie: // c: /a/b/1.txt, und einige sind nur einfache Dateinamen, wie z. in = item.getInputStream (); // Erstellen Sie eine Dateiausgabe Stream FileOutputStream out = new FileOutputStream (SavePath + "//" + Dateiname); // Erstellen Sie einen Buffer -Byte -Buffer [] = new Byte [1024 * 1024]; // Erstellen Sie einen Puffer -BYTE -Buffer [] New Output [1024 * 1024]. FileOutputStream (SavePath + "//" + Dateiname); // Erstellen Sie einen Puffer -Byte -Buffer [] = neues Byte [1024 * 1024]; // Die Kennung, um festzustellen, ob die Daten im Eingabestream gelesen wurden, ist intell. . in.close (); // den Ausgabestream ausschließen Message = "Datei -Upload erfolgreich!";}}} catch (exception e) {message = "Datei -Upload fehlgeschlagen!";Das verwendete Java -Paket wird mehr als 1 g hochgeladen
Commons-fileUpload-1.2.1.Jar
commons-io-1.3.2.jar
//xhr.setRequestheader("Content-type","Application/octet-stream;CharSet=UTF-8 "); Dies kann nicht hinzugefügt werden