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