使用此插件进行上传的主要目的:
我在Windows 7的VM中测试了IE9。在Firefox,Chrome和Edge中没有问题。
IE9中的问题是: 当上传仅1个文件并且该文件不是最后一个文件时(因此当我删除第三个文件输入字段时,通过第二个文件输入字段上传工作),上传不起作用。 当至少有2个文件一起上传时没有问题。
我使用的库和插件是:
插件的配置:
file_upload = form.fileupload({replaceFileInput: false}, {
//file_upload = form.fileupload({
url: url,
dataType: "json",
singleFileUploads: false,
autoUpload: false,
add: function(e,data){
uploadCategoryWithImage = true;
filesList.push(data.files[0]);
paramNames.push(data.paramName);
},
done: function(e, data) {
switch (uploadContext) {
case 'update':
updateCategoryDone(node, form, data.result, data);
break;
case 'create':
storeNewCategoryDone(node, form, data.result)
break;
case 'createLevel1':
storeNewCategoryLevel1Done(form, data.result);
}
},
fail: function( jqXHR, textStatus ) {
console.log('prepareCategoryFileUploads fail [jqXHR, textStatus]: ', [jqXHR, textStatus]);
}
});
单击表单提交按钮后使用:
file_upload.fileupload('send', {files:filesList, paramName: paramNames});
答案 0 :(得分:0)
解决。问题是当3个输入字段中只有一个有要上传的文件时,在jquery.iframe-transport.js中创建的表单中,所有输入字段的类型为" file" (而不是只有一个)在name属性中具有真正有要提交的文件的输入字段的名称。
对于IE9,或者对于没有window.FileReader的浏览器,对于paramName我现在给出一个数组,其中包含" file"类型的输入字段的所有名称。这不能在较新的浏览器中使用,因此这种更改必须限于不支持window.FileReader的浏览器。
现在,在表单提交后,使用了这样的代码:
<Cardviews>