视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Html完成异步上传文件的Jquery代码实例
2020-11-27 15:33:10 责编:小采
文档


本文简单介绍利用Html5的FormData实现文件的异步上传,还可以实现上传进度条和文件大小验证等,代码简单易懂,非常不错,具有参考借鉴价值,需要的的朋友参考下吧

1 简介

开发文件上传功能从来不是一件愉快的事,异步上传更是如此,使用过iframe和Flash的上传方案,也都感觉十分的别扭。本文简要简绍利用Html5的FormData实现文件的异步上传,还可以实现上传进度条和文件大小验证等。服务端使用springMVC的方案进行处理。

2 Html代码

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

3 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 JQuery文件大小验证

文件大小的及相应行为的控制,需根据需要自行处理,本方法只是示例方法。

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

5 JQuery进度条

在ajax方法中加入xhr即可控制上传进度,进度条可以使用html5的progress也可使用其它的进度条。显示及隐藏进度条需要自行处理,本方法只是简单介绍了进度条的基本控制。

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服务端

6.1 maven依赖

<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

示例程序,并未给出文件验证,存储及处理的相应代码。

@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 兼容性

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

8 推荐阅读

如果对上述方案不满意,推荐使用如下的解决方案:

JQuery File Uploader

【相关推荐】

1. HTML免费视频教程

2. 对HTTP Headers知识点的图文说明

3. Html5 datalist标签详解以及与后台数据的动态匹配

4. 分享一个超全面的HTML、CSS知识点总结

5. 教你怎么在nodejs下解析html

下载本文
显示全文
专题