前端如何處理后台返回的文件流?
處理方法:可以通過轉化為blob對象的方式處理,具體方法如下:
1、在請求后台接口時需要把responseType設置為blob格式。
2、前端把后台返回的文件流轉化為blob對象,然后利用window.URL.createObjectURL把blob對象轉化為url,然后利用a標簽進行下載。
放碼過來:
downloadBlobFile(data, name) {
if (window.navigator.msSaveOrOpenBlob) {
// 兼容IE
try {
var blobObject = new Blob([encodeURI(data)]);
window.navigator.msSaveOrOpenBlob(blobObject, fileName);
} catch (e) {
console.log(e);
}
} else {
var blob = new Blob([data], {
type: "application/octet-stream;charset=UTF-8"
});
var downloadElement = document.createElement("a");
// 下載的文件名
downloadElement.download = name;
// 創建下載的鏈接
downloadElement.href = window.URL.createObjectURL(blob);
// 點擊下載
downloadElement.click();
document.body.appendChild(downloadElement);
// 下載完成移除元素
document.body.removeChild(downloadElement);
// 釋放掉blob對象
window.URL.revokeObjectURL(downloadElement.href);
}
}
