當前使用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,所以我切換到了服務器解決方案。 –