In diesem Artikel wird kurz die Verwendung von FormData zum Implementieren des asynchronen Hochladens von Dateien vorgestellt. Der Code ist einfach und leicht zu verstehen, sehr gut und hat einen Referenzwert Ich muss darauf verweisen
1 Einführung
Die Entwicklung einer Datei-Upload-Funktion ist nie eine angenehme Sache, insbesondere der asynchrone Upload, den ich verwendet habe Iframe- und Flash-Upload-Lösungen fühlten sich ebenfalls sehr umständlich an. In diesem Artikel wird kurz die Verwendung von FormData von HTML5 zum Implementieren des asynchronen Hochladens von Dateien vorgestellt. Außerdem können Upload-Fortschrittsbalken und die Überprüfung der Dateigröße implementiert werden. Der Server verwendet zur Verarbeitung die SpringMVC-Lösung.
2 HTML-Code
<form id="myForm"> <input type="file" id="u_photo" name="u_photo" /> <input type="button" id="submit-btn" value="上传" /> </form>
3 JQuery Hochladen
$("#submit-btn").on('click', function() { $.ajax({ url:"/test/upload", type:"post", data:new FormData($("#myForm").get(0)), //十分重要,不能省略 cache: false, processData: false, contentType: false, success: function () { alert("上传成功!"); } }); });
4 JQuery-Dateigrößenüberprüfung
Die Kontrolle der Dateigröße und des entsprechenden Verhaltens muss bei Bedarf von Ihnen selbst gehandhabt werden. Diese Methode ist nur eine Beispielmethode.
$('#u_photo').on('change', function() { var file = this.files[0]; if (file.size > 1024*1000) { alert('文件最大1M!') } });
5 JQuery-Fortschrittsbalken
Fügen Sie xhr zur Ajax-Methode hinzu Der Upload-Fortschritt kann über den Fortschrittsbalken von HTML5 oder andere Fortschrittsbalken gesteuert werden. Das Anzeigen und Ausblenden des Fortschrittsbalkens muss von Ihnen selbst durchgeführt werden. Diese Methode führt nur kurz in die grundlegende Steuerung des Fortschrittsbalkens ein.
xhr: function() { var myXhr = $.ajaxSettings.xhr(); if (myXhr.upload) { myXhr.upload.addEventListener('progress', function(e) { if (e.lengthComputable) { $('progress').attr({ value: e.loaded, max: e.total, }); } } , false); } return myXhr; }
6 SpringMVC-Server
6.1 Maven-Abhängigkeit
<dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.5</version> </dependency> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.2</version> </dependency>
6.2 servlet-context.xml
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" />
6.3 Controller
Das Beispielprogramm stellt keinen entsprechenden Code für die Dateiüberprüfung, -speicherung und -verarbeitung bereit.
@RequestMapping(value="/test/upload",method = RequestMethod.POST) @ResponseBody public String upload(@RequestParam("u_photo") MultipartFile u_photo) { System.out.println("u_photo="+u_photo.getSize()); return "ok"; }
7 Kompatibilität
IE 10+, Firefox 4.0+, Chrome 7+, Safari 5+, Opera 12+
8 Empfohlene Lektüre
Wenn Sie mit der oben genannten Lösung nicht zufrieden sind, wird sie empfohlen um die folgende Lösung zu verwenden:
JQuery File Uploader
Das obige ist der detaillierte Inhalt vonVerwenden von HTML5 zum Implementieren eines Codebeispiels für die asynchrone Datei-Upload-Funktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!