1. 程式人生 > 其它 >js 返回的資料流 進行檔案下載

js 返回的資料流 進行檔案下載

發起請求,後臺返回二進位制資料流,進行下載

 1 import request from "@/router/axios";     //引入封好的請求
 2 
 3 // 請求方法
 4 export function getDown(obj) {
 5   return request({
 6     url: "介面",
 7     method: "get",
 8     params: obj,
 9     responseType: "arraybuffer",          //設定請求的方式,後臺返回資料流,就要設定 arraybuffer 。
10   }).then(({ data }) => {
11 // 處理返回的檔案流(data 是後臺返回的資料流) new Blob 裡面,type 是要下載的各類檔案型別 12 let blob = new Blob([data], { type: "application/vnd.ms-excel" }); 13 let objectUrl = (window.URL || window.webkitURL).createObjectURL(blob); 14 let downFile = document.createElement("a"); 15 let fileName = "設定下載出來的檔名.xls";
16 downFile.style.display = "none"; 17 downFile.href = objectUrl; 18 downFile.download = fileName; // 下載後文件名 19 document.body.appendChild(downFile); 20 downFile.click(); 21 document.body.removeChild(downFile); // 下載完成移除元素 22 // window.location.href = objectUrl 23 window.URL.revokeObjectURL(objectUrl); // 只要對映存在,Blob就不能進行垃圾回收,因此一旦不再需要引用,就必須小心撤銷URL,釋放掉blob物件。
24 }); 25 }