Home > Web Front-end > H5 Tutorial > Example analysis of how Html5 implements asynchronous file upload function

Example analysis of how Html5 implements asynchronous file upload function

黄舟
Release: 2017-05-21 14:24:07
Original
1563 people have browsed it

This article briefly introduces the use of Html5's FormData to implement asynchronous uploading of files , and can also implement uploading progress bar and file size Verification, etc., the code is simple and easy to understand, very good, and has reference value. Friends who need it can refer to it

1 Introduction

DevelopingFile upload function is never a pleasant thing, especially asynchronous upload. I have used iframe and Flash upload solutions, and they all feel very good. awkward. This article briefly introduces the use of Html5's FormData to implement asynchronous uploading of files, and can also implement upload progress bars and file size verification. The server uses the springMVC solution for processing.

2 Html code

<form id="myForm">
    <input type="file" id="u_photo" name="u_photo" />
    <input type="button" id="submit-btn" value="上传" />
</form>
Copy after login

3 JQueryUpload

$("#submit-btn").on(&#39;click&#39;, function() {
    $.ajax({
        url:"/test/upload",
        type:"post",
        data:new FormData($("#myForm").get(0)),
        //十分重要,不能省略
        cache: false,
        processData: false,
        contentType: false,
        success: function () {
            alert("上传成功!");
        }
    });
});
Copy after login

4 JQuery file size verification

File size and corresponding behavior control needs to be handled by yourself as needed. This method is only an example method.

$(&#39;#u_photo&#39;).on(&#39;change&#39;, function() {
    var file = this.files[0];
    if (file.size > 1024*1000) {
        alert(&#39;文件最大1M!&#39;)
    }
});
Copy after login

5 JQuery progress bar

Add xhr to the ajax method to control the upload progress. The progress bar can also use the progress of html5. Use other progress bars. Displaying and hiding the progress bar needs to be handled by yourself. This method only briefly introduces the basic control of the progress bar.

xhr: function() {
    var myXhr = $.ajaxSettings.xhr();
    if (myXhr.upload) {
        myXhr.upload.addEventListener(&#39;progress&#39;, function(e) {
            if (e.lengthComputable) {
                $(&#39;progress&#39;).attr({
                    value: e.loaded,
                    max: e.total,
                });
            }
        } , false);
    }
    return myXhr;
}
Copy after login

6 springMVC server

6.1 maven dependency

<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>
Copy after login

6.2 servlet-context.xml

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" />
Copy after login

6.3 Controller

sample program does not provide file verification. Corresponding code for storage and processing.

@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";
}
Copy after login

7 Compatibility

IE 10+, Firefox 4.0+, Chrome 7+, Safari 5+ , Opera 12+

8 Recommended reading

If you are not satisfied with the above solution, we recommend the following solution:

JQuery File Uploader

The above is the detailed content of Example analysis of how Html5 implements asynchronous file upload function. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template