我創建了一小段腳本,調用API來獲取PDF並將responseType作爲arraybuffer發送。當下載爲PDF格式時,Chrome會阻止Blob對象
使用此我創建一個新的Blob和類型設置爲「應用程序/ PDF」
要強制此下載我創建了一個錨元素,它傳遞blob和點擊。
這適用於本地和我的測試服務器上的其他瀏覽器,但在Chrome上我很失敗 - 沒有文件在下載欄中。
PDF是絕對可用的,因爲我可以將URL粘貼到API中並將它看到,並將原始API調用的響應傳遞給Blob。
示例代碼
var fileName = 'dummyFilename-' + offerId + '.pdf';
var blob = new window.Blob([resData], { type: 'application/pdf' });
var anchorElement = document.createElement('a');
var url = window.URL.createObjectURL(blob);
document.body.appendChild(anchorElement);
anchorElement.id = 'anchorElement';
anchorElement.hidden = 'true';
anchorElement.href = url;
if (typeof anchorElement.download !== 'undefined') {
anchorElement.download = fileName;
} else {
anchorElement.target = '_blank';
}
anchorElement.click();
其實我發現我真的只需要Blob就可以在IE下載PDF。最後,我只是將點擊指向一個正常的URL,其下載屬性設置爲強制執行此操作,併爲不支持此操作的瀏覽器打開新的選項卡。我仍然不確定爲什麼Chrome不能正確處理Blob。 –