使用formdata时,图像上载功能在Internet Explorer中不起作用

时间:2012-11-27 07:10:16

标签: ajax

如果我使用multipart / form-data来获取图像数据,为什么图像上传功能在Internet Explorer9中不起作用。 如何在Internet Explorer中上传图像。

这是我用来上传图片的代码。

      var formData = new FormData($('form')[1]);


    var onclick_attr=$('#Upload').attr('onclick');
     $.ajax({
            url: '${pageContext.servletContext.contextPath}/UploadImage',
            data: formData,
            type: 'POST',
            cache: false,
            contentType: false,
            processData: false,
            beforeSend: function(xhr) {
                $('#process-img-div').hide();
                $('#uploading-img').show();
                $('#Upload').attr('onclick','').css('opacity','0.5');
                $('#loader-imgforlogo').show();
            },
            success: function(xhr) {

                var str = xhr.split('&');
                for(var i=0; i<str.length; i++) {
                    var keys = str[i].split(':');
                    if(keys[0]=='Name')
                        fileName = keys[1];
                    else if(keys[0]=='Width')
                        imgWidth = keys[1];
                    else if(keys[0]=='Height')
                        imgHeight = keys[1];
                    else if(keys[0]=='Path')
                        filePath = keys[1];
                    }

                $('#preview').attr({
                               'src':'${pageContext.servletContext.contextPath}/uploads/'+fileName
                });

                $('#process-img-div').show();
                $('#uploading-img').hide();
            },
            complete:function(jqXHR, textStatus){
                $('#Upload').attr('onclick',onclick_attr).css('opacity','1');
                $('#loader-imgforlogo').hide();
                $.fancybox.close(); 

            },
            error: function(xhr) {

            }
    });
     }

1 个答案:

答案 0 :(得分:1)

在IE10之前,Internet Explorer中不支持FormData对象。 IE9不支持FormData Object。所以它不适用于IE9 检查supported browsers的FormData对象

另外看看另一个类似的问题 FormData not working in Internet Explorer?

对于不支持FormData对象的旧浏览器,您可以先在此处检查浏览器是否支持它How can I check if the browser support HTML5 file upload (FormData object)?

如果浏览器不支持,您可以遍历表单dom元素并创建一个json对象来设置为$ .ajax方法的数据属性值。如果您要上传任何文件,请查看Iframe Upload Solution