目前使用 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 时,您将丢失缓存。
现在一切都说得通了吧?
您唯一能做的就是在新选项卡中打开 Blob 网址:
window.open(fileBlob, '_blank');
问题解决了。
关于pdf - 无法在 Safari 上下载 pdf blob url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37817591/