前一阵子,迭代一个线上的项目,其中有一个图片上传的功能,之前用的ajaxfileupload.js来实现上传的,不过由于ajaxfileupload.js,默认是单文件上传(虽然可以通过修改源码的方法来实现多文件上传),又加上是在移动端做的,所以就打算采用html5的FormData实现多文件上传
首先html页面定义有两种:
Html1
1
2
3
|
<form enctype= "multipart/form-data" id= "formfile" > <input type= "file" name= "file" /> </> |
Html2
1
|
<input type= "file" multiple= "multiple" accept= "image/gif, image/jpeg, image/png, image/jpg, image/bmp" /> |
项目中我采用了Html2的方式
再看看上传的JS部分吧:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
$(document).on( "change" , ".upload-img input:file" , function() { var fileId = $( this ).attr( "id" ); var t_files = this .files; var imglength = $( "#view_" + fileId).parent().parent().find( ".upload-img" ).length; if (imglength== 1 ) { if (t_files.length > 5 ) { new Message().showMsg( "最多选择五张图片" ); return false ; } else if (t_files.length < 1 ) { new Message().showMsg( "至少选择一张图片" ); return false ; } } else if (t_files.length+imglength> 6 ) { new Message().showMsg( '最多再选择' + ( 6 -parseInt(imglength)) + '张图片' ); return false ; } var data = new FormData(); for (var i= 0 ;i<t_files.length;i++){ data.append( 'file' ,t_files[i]); data.append( 'randomCode' ,fileId+i); data.append( 'upDir' , 'comment' ) } // for(var pair of data.entries()){ // console.log(pair); // } // console.log(JSON.stringify(data)); $.ajax({ url : '${pageContext.request.contextPath}/file/multipleCommentImageUpload' , //用于文件上传的服务器端请求地址 type : 'post' , processData: false , // 告诉jQuery不要去处理发送的数据 contentType: false , // 告诉jQuery不要去设置Content-Type请求头 data:data, cache: false }).done(function(data,status){ var dataObj = jQuery.parseJSON(data); if (dataObj.state == - 1 ){ new Message().showMsg( "上传图片出错" ); } else { var imgs = dataObj.imgs; for (var i= 0 ;i<imgs.length;i++) { var imgUrl = imgs[i].imageUrl; var imglength = $( "#view_" + fileId).parent().parent().find( ".upload-img" ).length if ( imglength < 5 ) { $( "#view_" + fileId).parent().after( '<div class="upload-img"><img src="' + imgUrl + '" id="codetool">
上面第19行代表初始化formdata对象,其有两种创建方法,对于使用html2来说使用该方式来创建,使用html1来说可以使用 Java代码部分:
具体上传的代码就需要自己来实现了,总之就是多文件上传后,也还是需要循环着来传的. 网上有挺多的关于formdata多文件上传的文章,但都写的比较零散,有的只写了前台,有的写得只是后台,有一篇写得比较详细,不过是php的,所以自己就整理了一篇java的,希望可以帮到需要帮助的人 原文链接:http://www.cnblogs.com/kanyun/archive/2017/07/13/7159232.html 延伸 · 阅读
精彩推荐
|