我有一个表单,允许在动态添加到表单的各个字段中上传文件。我正在使用Blueimp的jQuery文件上传插件。我正在尝试在一个请求中发送多个文件。我不希望发送多个请求。当我提交表单时,要上载的文件不包含在请求中。我将它们保存在add方法的filesList数组中,并确保覆盖现有值。然后我使用send选项发送文件。虽然,他们不包括在ajax帖子中。我错过了什么?我在网上见过别人试图做到这一点。但是,我还没有找到一个可靠的工作示例。以下是我的代码:
var fileList = [],
exists = false;
$form.fileupload({
autoUpload: false,
singleFileUpload: false,
url: '/handler.php',
add: function(e, data) {
exists = false;
for(var i = 0, len = filesList.length; i < len; i++) {
if(filesList[i].paramName === data.paramName) {
// file already exists for this param, replace it
exists = true;
filesList[i] = data;
break;
}
}
// no file exists for this param, add it to array
if(!exists) {
filesList.push(data);
}
$form.off('submit').one('submit', function(e) {
$form.fileupload('send', {
files: filesList
});
return false;
});
}
})
答案 0 :(得分:8)
我认为您的问题是该选项是 singleFileUpload s 并带有' s '。
默认情况下,使用针对XHR类型上传的单独请求上载选择的每个文件。 将此选项设置为false可在每个请求中上载文件选择。
注意:使用一个请求上传多个文件需要将multipart选项设置为true(默认值)。
输入:boolean 默认值:true
答案 1 :(得分:-1)
如果您要提交带有附件的表单,则必须调用data.submit()
函数。
在数据参数上调用submit方法时,将开始上载。
data.submit()返回一个Promise对象,并允许使用jQuery的延迟回调附加其他处理程序。