前端如何處理后台返回的文件流?
處理方法:可以通過轉化為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); } }