首页 / 问答 / JavaScript中使用ajax发送POST数据请求并用blob下载文件时在IE浏览器InvalidStateError错怎么解决?

JavaScript中使用ajax发送POST数据请求并用blob下载文件时在IE浏览器InvalidStateError错怎么解决?

0

在使用JavaScript进行前端开发过程中,有时候需要使用Ajax向后端发送POST请求并下载后端返回的文件,常用的做法是使用Blob,然后再创建一个a标签并触发点击事件来完成文件下载功能,示例代码如下:

var blob = new Blob([csvContent.join('')], { type: 'text/csv;charset=utf-8'});
var link = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');
link.href = URL.createObjectURL(blob);
link.download = 'teams.csv';
link.click();

以上方法在现代浏览器(Chrome,Firefox等)中都正常工作,但在IE中浏览器中却无法正常使用并出现InvalidStateError的错误,应该如何解决呢?

回复 [×]
提交评论
请输入评论内容

3 个回答

  • 0

    出现这个问题是因为在IE浏览器中,不允许用户真的打开blob数据流,如果想要在IE中保存Blob文件,则需要使用msSaveOrOpenBlob()函数,具体方法如下:

    Rector的个人主页

    Rector

    2020-05-15 回答

    • 0

      一个比较完整的兼容IE的使用Blob下载文件的方法,如下:

      Rector的个人主页

      Rector

      2020-05-15 回答

      • 0

        另一个使用Blob下载文件的方法,如下:

        Rector的个人主页

        Rector

        2020-05-15 回答

        我来回答