最近项目中有个文件上传的,还是异步上传的,所以就找到了ajaxFileUpload这个方案。
解决了异步上传问题,却发现此方案有一个问题:上传完文件,如果想更改重新选择上传另外一个文件却不行,必须刷新页面
找了网上的,有的说file改用live绑定事件,有的说修改ajaxFileUpload的源码,有的说上传完文件更新file的dom结构(新增一个任意属性)……都试过了,都不行
后来发现有人说重新绑定change事件,于是试试,测试,成功!
最终代码如下:
function ajaxFileUpload() {
$("#loading").toggle();
$.ajaxFileUpload({
url : '/drp2/file/upload.action', // 用于文件上传的服务器端请求地址
secureuri : false, // 是否需要安全协议,一般设置为false
fileElementId : 'file', // 文件上传域的ID
dataType : 'json', // 返回值类型 一般设置为json
success : function(data, status) // 服务器成功响应处理函数
{
attachmentId=data.rsData;
console.log("上传附件的forignid:"+attachmentId);
$("#loading").toggle();
if(attachmentId==null||data.status=="9999"){
alert("上传失败:"+data.statusMsg);
}else{
alert("上传成功.");
}
$("#file").bind("change","fileChangeFunc()");
//$("#file").replaceWith("<input type=\"file\" style=\"right: 0; left:0; width: 100%;\" name=\"file\" id=\"file\"/>");
},
error : function(data, status, e)// 服务器响应失败处理函数
{
alert("文件上传错误:" + e);
}
})
}
function fileChangeFunc(){
$("#attachment").val($("#file").val());
ajaxFileUpload();
}
感谢网上各位的分享和帮助,特码下我的小小经历,希望能帮到人~