JavaScript:通过IE中的数据URL保存文件

时间:2017-06-09 15:59:29

标签: javascript reactjs internet-explorer

我有一个转换文件的应用。我正在发送文件,转换的文件以数据URL的形式返回。如果Chrome中的一切都运行良好,但IE(10/11 / Edge)则是另一回事。已经尝试了几件事并没有占上风:

1)IE不支持HTML5下载属性。我尝试将返回的URL指定为锚标记href,但不支持调用.click(),并且手动单击该链接不会执行任何操作。

2)window.navigator.msSaveOrOpenBlob()和File Saver.js。弹出SaveAs对话框,但blob为空,从不下载任何内容。

var file= new Blob([returnedFile], {type: "application/pdf"});
window.navigator.msSaveOrOpenBlob(file, 'doc.pdf');
FileSaver.saveAs(file, 'doc.pdf');

要尝试的任何想法或建议?

2 个答案:

答案 0 :(得分:0)

首先,尝试验证saveAs存在:

if (window.saveAs) { 
    window.saveAs(blob, name); 
} else { 
    navigator.saveBlob(blob, name); 
}

至于Blob本身:

  • 创建<a>
  • 更新href

    a.href = window.URL.createObjectURL(new Blob(returnedFile,{type:&#34; application / pdf&#34;}));

  • 点火click事件

可以在那里查看或多或少相同的功能:http://jsfiddle.net/VB59f/2/

答案 1 :(得分:0)

结束通过navigator.userAgent.match获取浏览器并相应地根据每个浏览器处理保存:

 var saveData = (data, fileName) => {

IE:

FileSaver.saveAs(blob, fileName + "." + extension);

铬:

var downloadLink = document.createElement("a");
document.body.appendChild(downloadLink);
downloadLink.style.display = "none";
downloadLink.href = data;
downloadLink.download = fileName;
downloadLink.click();