js 返回的資料流 進行檔案下載
阿新 • • 發佈:2022-05-17
發起請求,後臺返回二進位制資料流,進行下載
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 }