我只有一些输入字段和一个文件输入字段的普通表单。 我使用Blueimp的Jquery File Upload插件上传文件。它似乎工作,如果您选择一个文件,然后单击上传按钮。但是,如果您重新选择要上传的文件,它会保存所有选择的史前文章,并在上传后将所有XHR发送到服务器。
我只想上传一个当前选中的文件,并非所有以前选择的文件(在文件打开对话框中)。
这是我的js模块来处理上传:
$(function () {
$('#upload_form').fileupload({
dataType: 'json',
autoUpload: false,
fileInput: '#filechose_button',
replaceFileInput: false,
maxNumberOfFiles: 1,
multipart: true,
add: function (e, data) {
$('#upload_button').click(function () {
$('#upload_button').attr('disabled', true);
...
data.submit();
...
});
},
done: function (e, data) {
... // successfully uploaded
},
progressall: function (e, data) {
... // update a progress bar
}
});
});
我在这里找到的解决方案(How to upload a file only once with blueimp file upload plugin?)似乎不是最好的方式(我认为它很脏),因为解锁click事件仍然无法解决收集所有以前选择的文件的问题(一种内存泄漏)
选项maxNumberOfFiles: 1
对我不起作用。
答案 0 :(得分:8)
我遇到了同样的问题,我的解决方案是取消绑定我的按钮的click事件,并在调用add事件时将其绑定回来。试试这个。
...
add: function (e, data) {
$('#upload_button').unbind('click');
data.context = $('#upload_button').bind('click', function () {
...
data.submit();
}
}