1

我必须处理带有纯文本的大型数据集。我通过云将这些数据作为多个块获取,并使用网络工作者来处理和格式化数据。最后,我想把它下载到用户的本地存储中。因此,我使用FileSaver.js中定义的 Blob 和 saveAs()来授予跨浏览器兼容性。我想通过 URL.createObjectURL 发送对最终数据的引用,并将 URL 的 DOMString 传递回我的主线程。这在 Chrome 或 Edge 中运行良好,但 IE11 会产生一些问题。如果我 console.log 检索到的 URL,Chrome 和 Edge 会给我以下结果:

blob:"reference to website"/"XXXX-XXXXX-XXXXX-XXXX"

但是如果我在 IE11 中做同样的事情,我会得到以下结果:

blob:"XXXX-XXXXX-XXXXX-XXXX"

这是一个示例代码:https ://jsfiddle.net/BoesingaGit/Lvx20uj8/6/ 我在这里不使用网络工作者,因为没有它也存在问题。可悲的是,saveAs 函数在 JSFiddle 中不起作用,但它在我的常规代码中起作用。在 Chrome 中可以下载 url,但在 IE 中不行。如果你看一下控制台,你会发现 Chrome 和 IE 中的 URL 是不同的。我猜这会导致在 IE 中下载失败。是否有原因,为什么在 IE 中没有引用我的网站?

谢谢。

4

1 回答 1

0

我检查了这个问题并对此进行了一些研究。

出于安全原因,我发现 BLOB URL 在 IE 浏览器中不起作用。

要解决此问题,您可以尝试使用msSaveOrOpenBlob() 方法

示例代码:

    var str = "Hello World";
    blobObject = new Blob([str], {type: "plain/text"});
    $(button).click(function(){
        window.navigator.msSaveOrOpenBlob(blobObject, filename);
    });

参考:

  1. 在 IE11 中打开由 createObjectURL 创建的链接

  2. 带有angularjs的Internet Explorer中的Blob url

于 2020-05-06T07:57:08.450 回答