IE9中的jQuery文件上传仅部分工作(使用插件jQuery文件上传)

时间:2016-03-09 14:33:45

标签: jquery internet-explorer file-upload jquery-file-upload blueimp

使用此插件进行上传的主要目的:

  • 通过3个不同的输入字段上传最多3个文件(图像),无需重新加载页面。
  • 与未连接到单个文件的其他表单数据一起执行此操作。
  • 在创建和编辑内容项目时(在此情况下为类别)执行此操作。

我在Windows 7的VM中测试了IE9。在Firefox,Chrome和Edge中没有问题。

IE9中的问题是: 当上传仅1个文件并且该文件不是最后一个文件时(因此当我删除第三个文件输入字段时,通过第二个文件输入字段上传工作),上传不起作用。 当至少有2个文件一起上传时没有问题。

我使用的库和插件是:

  • jquery 1.12.1(也使用版本低至1.8.3 - )
  • jquery-ui 1.11.4(也使用版本1.9.2)
  • jQuery-File-Upload 9.12.1(也使用版本低至8.1.0):
    • jquery.iframe-transport.js
    • jquery.fileupload.js

插件的配置:

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});

1 个答案:

答案 0 :(得分:0)

解决。问题是当3个输入字段中只有一个有要上传的文件时,在jquery.iframe-transport.js中创建的表单中,所有输入字段的类型为" file" (而不是只有一个)在name属性中具有真正有要提交的文件的输入字段的名称。

对于IE9,或者对于没有window.FileReader的浏览器,对于paramName我现在给出一个数组,其中包含" file"类型的输入字段的所有名称。这不能在较新的浏览器中使用,因此这种更改必须限于不支持window.FileReader的浏览器。

现在,在表单提交后,使用了这样的代码:

<Cardviews>