当前使用FileReader打开并查看适用于Chrome的PDF。但是,当在Safari上打开PDF并单击下载按钮时,什么都不会发生。无法在Safari上下载pdf blob url
var reader = new FileReader();
reader.onloadend = function(e) {
$window.location.href = reader.result;
}
reader.readAsDataURL(file);
当前使用FileReader打开并查看适用于Chrome的PDF。但是,当在Safari上打开PDF并单击下载按钮时,什么都不会发生。无法在Safari上下载pdf blob url
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,则不起作用。
WTH? 所以,最初我真的想到浏览器中出现某种黑魔法,然后我发现了这个问题: 该文件不存在,但它的唯一缓存存储在浏览器内。因此,当您生成blob并将当前选项卡重定向到指向生成的blob url时,您将失去缓存。
现在一切都合适吗?
唯一觉得你可以做的,与开放的Blob网址在新标签:
window.open(fileBlob, '_blank');
问题已解决。
这也发生在我身上。 @Tyler你找到了解决方案吗? –
@AbhishekPrakash我没有,我注意到IE浏览器不允许超过一定长度的BLOB URL,所以我切换到了服务器解决方案。 –