有關谷歌下載PDF檔案而不是直接開啟預覽的問題
阿新 • • 發佈:2021-08-02
找了很多帖子,都不行,
解決方法把連結處理成blob檔案再呼叫下載。
但是仍然不行,最終原因找到:
缺少了這一部建立,需要把二進位制資料重新用 Blob物件申明下
let data = new Blob([blob], {
type: "application/pdf;charset=UTF-8",
});
下面是方法:
// 下載
downloadFile(file) {
let url = this.handleImg(file);
this.getBlob(url).then((blob) => {
// 成功後下載
this .saveAs(blob, file);
});
},
// 連結轉換blob檔案
getBlob(url) {
return new Promise((resolve) => {
const xhr = new XMLHttpRequest();
xhr.open("GET", url, true);
xhr.responseType = "blob";
xhr.onload = () => {
if (xhr.status === 200) {
resolve(xhr.response);
}
};
xhr.send();
});
},
// 下載pdf
saveAs(blob, filename) {
let a = document.createElement("a");
let data = new Blob([blob], {
type: "application/pdf;charset=UTF-8",
});
a.style.display = "none";
a.download = filename;
a.href = URL.createObjectURL(data);
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
window.URL.revokeObjectURL(a.href); //釋放記憶體
},