最适合中国国情的jquery file upload 批量上传改版插件,结合spring mvc

摘要: 如题所述,也许真是最适合中国开发者项目的 jquery file upload 改版的插件,这是一个利用HTML5 的文件上传的插件,用google 直接可以搜索 "jquery file upload " 可以直接到 github 的网站下载这个插件的最新版。也许你看到这个文章的时候,插件已经更新了,但不妨碍中国人如何使用这个插件,因为重要的是思路。在做项目中发现了官网的插件有如下几个问题:

如题所述,也许真是最适合中国开发者项目的 jquery file upload 改版的插件,这是一个利用HTML5 的文件上传的插件,用google 直接可以搜索 "jquery file upload " 可以直接到 github 的网站下载这个插件的最新版。也许你看到这个文章的时候,插件已经更新了,但不妨碍中国人如何使用这个插件,因为重要的是思路。在做项目中发现了官网的插件有如下几个问题:
1. 批量上传,并不是真正的批量上传,比如,在chrome firefox 浏览器下,可以一次选择多个文件,这是可以一次批量上传的,但如果是 IE ,选择多个文件,需要多次选择。即使是 chrome 也有多次选择的情况,如果要将多次选择的文件一次提交,jquery file upload 是做不到了,即使你设置了 "singleFileUploads:false" . 所以这是需要改进的地方.

2. 既然上传有上面所说的问题,那么取消按钮,自然也有这个问题。如果是一次选择了多个文件,点击某一个文件后面的 取消 按钮,可能将所有这一次选取的文件全部取消,这也不符合中国人开发习惯,正确的应该是一个一个取消。

3. 在IE 浏览器下有BUG, 只能上传第一个文件,不能上传多个文件,应为ie 是利用 IFRAME 上传文件,所以需要修改 iframe 上传的部分代码.

4. 如果你是副客户端开发,第一次load 进 jquery file upload 的所有js 后,并且上传文件之后 ,那么第二次再上传文件,是不行的,除非刷新页面,重新加载 jquery file upload 的js 文件, 才可以。这些需要加上“$["blueimp"]["fileupload"] = false; ” 才可以.

5. 富客户端开发,还有一个问题,就是在上传完之后,最好 修改 jquery file upload 在每个 tr 上绑定的data 缓存。并修改 button property。 这种做的目的是万一出错了,返回到前台,前台可以再次提交,否则不可能提交.

其实这些所有的问题,除了IE 只能上传一个文件只玩,都可以通过 自己 扩展 jquery file upload 来实现,jquery file upload 本身也提供了相应的 机制,比如在我后面提供的代码中

if (![].map){
	Array.prototype.some = function(f,scope){
		for(var i=0,n=this.length;i'+
      
        ''+
           ' 

${name}

'+ ''+ ''+ '

${size} KB

'+ '
'+ ''+ ''+ ' '+ ' '+ ''+ '{{/each}}'; var url = 'http://localhost:8080/fileupload/rest/controller/upload'; $["blueimp"]["fileupload"] = false; $('#fileupload').fileupload({ autoUpload: false, url: url, dataType: 'json', singleFileUploads:false, uploadTemplateId:null, downloadTemplateId:null, maxFileSize : 209715200, uploadTemplate:function(data){ return $.tmpl(template,data); }, done:function(e,data){ //data.jqXHR = null ; var fileTrs = $(".template-upload",e.currentTarget); fileTrs.each(function(){ //alert($(this).data("data")); var item = $(this).data("data"); //if (!datas.some(function(x){return x === item;})){ // datas.push(item); //} item.jqXHR = null; $(this).find(".start").prop('disabled', false); }); alert("done"); } }).bind("fileuploadadded",function(e,data){ var datas = [data]; var fileTrs = $(".template-upload",e.currentTarget); fileTrs.each(function(){ //alert($(this).data("data")); var item = $(this).data("data"); if (!datas.some(function(x){return x === item;})){ datas.push(item); } }); function concat(objs,propName){ var list = []; //alert(propName); objs.forEach(function(x){ list = list.concat(x[propName]); }); return list; } data.fileInputs = [data.fileInput]; ["files","originalFiles","paramName","fileInputs"].forEach( function(x){ data[x] = concat(datas,x); }); data.context = fileTrs; fileTrs.each(function(){ $(this).data("data",data); }); }); window.cancelUpload = function(button,fileNameAndSize){ var row = $(button).closest(".template-upload"); var data = row.data("data"); var i = 0; for(;i

ie 下上传文件,通过IFRAME ,需要修改 "jquery.iframe-transport.js" 这个文件,大概在 137 行的地方,修改成如下
  for(var ii=0;ii

另外,jquery file upload 基本是通过css 样式去绑定事件的,比如".start" ".files", ".cancel" 等都很重要,很多事件都是通过jquery选择样式,然后绑定的。另外,上传的文件对象都是绑定在 对象上面,这里涉及到了juqery.data ,缓存的使用。

我在这里提供一个 spring mvc 结合 jquery file upload 的例子,可以下载参考.



整个 file upload 的源代码 (juqery file upload source code free download,not include jar files)




sqring mvc jquery file upload.

上一篇: inputStream to Properties 与 Properties to 流
下一篇: 在listener 中获取 spring context 从而得到 bean 的方法.

Avatar

12 评论于: 2016-07-05

你好可以个我发一下这个源码吗?he1ya1r@163.com

Avatar

天天 评论于: 2015-08-08

不能注册,这个源码怎么下载呢?

Avatar

1212121212 评论于: 2015-06-12

想下载这个代码,没法注册,发送到我邮箱
570195314@qq.com

Avatar

1 评论于: 2014-12-01

你邮箱多少?asuncool@hotmail.com邮件发不了!
[reply=yihaomen,2014-12-03 08:37 AM]summer#yihaomen.com, 自己替换#号。[/reply]

Avatar

轻舞肥羊 评论于: 2014-01-14

可以的,你再仔细测试下,IE下原来只能上传一个文件,修改后可以上传多个文件的。

Avatar

大叔 评论于: 2014-01-14

我发现我写的在ie下也上传不了。。。
 评论 ( What Do You Think )
名称
邮箱
网址
评论
验证
   
 

 


  • 微信公众号

  • 我的微信

站点声明:

1、一号门博客CMS,由Python, MySQL, Nginx, Wsgi 强力驱动

2、部分文章或者资源来源于互联网, 有时候很难判断是否侵权, 若有侵权, 请联系邮箱:summer@yihaomen.com, 同时欢迎大家注册用户,主动发布无版权争议的 文章/资源.

3、鄂ICP备14001754号-3, 鄂公网安备 42280202422812号