gpt4 book ai didi

pdf - 无法在 Safari 上下载 pdf blob url

转载 作者:行者123 更新时间:2023-12-04 17:08:02 29 4
gpt4 key购买 nike

目前使用 FileReader 打开和查看适用于 Chrome 的 PDF。但是,当在 Safari 上打开 pdf 并单击下载按钮时,没有任何 react 。

var reader = new FileReader();
reader.onloadend = function(e) {
$window.location.href = reader.result;
}
reader.readAsDataURL(file);

最佳答案

在花了一整天研究类似问题之后,我明白了问题出在哪里,所以我现在可以与您分享我的知识。

基本上,这种问题是在渲染 Blob 时产生的。在已打开的浏览器选项卡中,因此您的页面 url 会发生以下变化:
blob:http://localhost:8080/9bbeffe1-b0e8-485d-a8bd-3ae3ad9a0a51
要求 pdf 的错误程序是这样的:

var fileBlob = new Blob([response.data], {type: 'application/pdf'});
window.location.hfref = fileBlob;

为什么这不起作用?
好吧,您可以看到页面上呈现的 pdf,因此您可能会误以为您的 pdf 加载得很好。但是,如果您尝试刷新页面或在您的机器上下载 pdf,它不起作用。

什么?
所以,最初我真的想在浏览器周围使用某种黑魔法,然后我想出了问题:
该文件不存在,但它唯一的缓存存储在浏览器中。因此,当您生成 blob 并重定向当前选项卡以指向生成的 blob url 时,您将丢失缓存。

现在一切都说得通了吧?

  • 您在服务器上请求文件
  • 浏览器将缓冲区存储在选项卡内
  • 您将页面 url 指向读取缓冲区
  • 您看到 pdf 但同时丢失了缓冲区信息

  • 您唯一能做的就是在新选项卡中打开 Blob 网址:

    window.open(fileBlob, '_blank');

    问题解决了。

    关于pdf - 无法在 Safari 上下载 pdf blob url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37817591/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com