Cet article présente brièvement l'utilisation de FormData de Html5 pour implémenter le téléchargement asynchrone de fichiers. Il peut également implémenter des barres de progression de téléchargement et la vérification de la taille des fichiers. Le code est simple et facile à comprendre, très bon et a une valeur de référence. en cas de besoin, vous pouvez vous y référer
1 Introduction
Développer une fonction de téléchargement de fichiers n'est jamais une chose agréable, surtout le téléchargement asynchrone que j'ai utilisé. Les solutions de téléchargement iframe et Flash semblaient également très gênantes. Cet article présente brièvement l'utilisation de FormData de HTML5 pour implémenter le téléchargement asynchrone de fichiers, et peut également implémenter des barres de progression de téléchargement et une vérification de la taille des fichiers. Le serveur utilise la solution springMVC pour le traitement.
2 Code HTML
<form id="myForm"> <input type="file" id="u_photo" name="u_photo" /> <input type="button" id="submit-btn" value="上传" /> </form>
3 Téléchargement JQuery
$("#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 Vérification de la taille du fichier JQuery
Le contrôle de la taille du fichier et le comportement correspondant doivent être gérés par vous-même si nécessaire, cette méthode Juste un exemple de méthode.
$('#u_photo').on('change', function() { var file = this.files[0]; if (file.size > 1024*1000) { alert('文件最大1M!') } });
5 Barre de progression JQuery
Ajoutez xhr à la méthode ajax pour contrôler la progression du téléchargement La barre de progression peut utiliser la progression. de html5 Vous pouvez également utiliser d'autres barres de progression. L'affichage et le masquage de la barre de progression doivent être gérés par vous-même. Cette méthode ne présente que brièvement le contrôle de base de la barre de progression.
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; }
Serveur SpringMVC 6
Dépendance Maven 6.1
<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
l'exemple de programme ne donne pas le code correspondant pour la vérification, le stockage et le traitement des fichiers.
@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 Compatibilité
IE 10+, Firefox 4.0+, Chrome 7+, Safari 5+, Opera 12+
8 lectures recommandées
Si vous n'êtes pas satisfait de la solution ci-dessus, il est recommandé d'utiliser la solution suivante :
JQuery File Uploader
【Recommandations associées】
2. Explication graphique des points de connaissance des en-têtes HTTP
4 Partagez un résumé très complet des points de connaissances HTML et CSS.
5. Vous apprendre à analyser le HTML sous nodejs
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!