文件上传无法在Internet Explorer 8和9

时间:2015-10-20 07:22:24

标签: ajax file upload internet-explorer-8 internet-explorer-9

function uploadFile(){

   var file = $("file1").files[0];
   var formdata = new FormData(); formdata.append("file1", file);
    var ajax = new XMLHttpRequest();
    ajax.upload.addEventListener("progress", progressHandler, false);
    ajax.addEventListener("load", completeHandler, false);
    ajax.addEventListener("error", errorHandler, false);
    ajax.addEventListener("abort", abortHandler, false);
    ajax.open("POST", "upload.php";
    ajax.send(formdata);

}

错误1:无法获取属性的值' 0':对象为空或未定义

错误2:不支持ForData。

1 个答案:

答案 0 :(得分:0)

IE8或IE9不支持FormData API。它只在IE10中添加。如果您想支持这些旧版浏览器,则无法使用现代HTML5 API。

有一个jQuery Forms插件可以在旧的IE版本中运行,并允许您通过ajax上传文件。我自己使用它,它非常有效。您可以在此处下载:http://malsup.com/jquery/form/。您可能需要重新编写代码才能使用它,因为它在概念上与HTML5 FormData API完全不同,但至少您可以获得适用于您想要的所有浏览器的内容支持。

您还可以尝试查看是否有FormData的填充,这样您就可以继续使用现有代码了。一个快速谷歌出现了this one,我发现列出了here。我没有尝试过,所以无法保证,但Modernizr在该清单上列出的polyfill通常都很不错。