最近做了一个通过上传文件到后台然后后台解析文件后将内容显示在页面的功能,但是在测试过程中发现使用ajaxFileUpload上传文件时第一次上传时后台可以正常读取到文件,但是当再次点击上传按钮时发现后台读取不到文件无法解析,出现这种问题的原因是由于ajaxFileUpload.js源码中在创建form的时候没有保留原file的信息,所以再次上传时会造成无法获取之前的file信息,找到createUploadForm 这段代码,原代码如下
· var oldElement = $('#' + fileElementId);
· var newElement = $(oldElement).clone();
· $(oldElement).attr('id', fileId);
· $(oldElement).before(newElement);
· $(oldElement).appendTo(form);
将其修改为如下即可:
· var oldElement = jQuery('#' + fileElementId);
· var newElement = oldElement.clone(true);
· newElement[0].files=oldElement[0].files;
· oldElement.attr('id', fileId);
· oldElement.before(newElement);
· oldElement.appendTo(form);
本人也提供了ajaxFileUpload.js文件下载,如需下载可点击 ajaxFileUpload.js 进行下载
该下载包除了除了满足正常的文件上传外还做了一些修改,修改所解决的问题包含:
该js包是在官方下载的ajaxFileUpload.js基础上所做修改后的包,修改该包所要解决的问题包括:
1、浏览器上传文件后不刷新页面再次点击上传时后台接收不到文件的bug
2、解决了ajaxFileUpload 报jQuery.handleError is not a function的bug
3、解决了使用ajaxFileUpload除了上传文件外不能传递其他参数的bug