在做一些後台的報表數據時,可能會遇到,點擊【下載】按鈕後,直接實現下載 Excel 文件功能。
前端需要解析後端返回的二進制流文件,返回新建立的 Blob 物件,再創建 a 標籤,利用 a 標籤的 href 屬性,載入數據流,同時還可以自定義文件名稱。
API 設定 responseType
Axios api
在 API 的地方加上 responseType: 'blob'
1 | export function exportExcel() { |
建立 Blob
var aBlob = new Blob( array, options );
array 可以是一個由 ArrayBuffer、ArrayBufferView、Blob 組成的 Array 物件,或是上述多種型別物件的混合陣列。這個陣列將會被放進新建立的
Blob
物件當中。DOMStrings 的編碼為 UTF-8。options 是選擇性的 BlobPropertyBag 字典物件,有以下兩個指定的屬性:
type
屬性,預設值為空字串""
,表示將被放進Blob
物件的陣列內容之 MIME 類型。endings
屬性,表示包含\n
換行字元的字串要如何輸出,預設值為字串"transparent"
。此屬性值可為:"native"
,代表換行字元會被轉為目前作業系統的換行字元編碼。也可以是"transparent"
,代表保留Blob
物件中資料的換行字元。
自訂檔名
可以利用 download 屬性來自定義下載檔案名稱
1 | async downloadExcel() { |
抓 content-disposition 取得檔名
抓取 header 的 content-disposition 填入檔案名稱
如瀏覽器支援 filename*=UTF-8
則顯示此檔名
如不支援則顯示 filename=
的檔名
1 | async downloadExcel() { |
REFERENCE
🚀實體工作坊分享
玩轉 Web頁面的前端技術(HTML/CSS/JS) 一日體驗課
最近時賦學苑開了實體體驗課,即使你對程式碼沒有概念也能上手!Lala 會帶你一起做出一個個人品牌形象網站,帶你快速了解前端的開發流程,快跟我們一起玩轉 Web 吧!🚀線上課程分享
線上課程可以加速學習的時間,省去了不少看文件的時間XD,以下是我推薦的一些課程想學習更多關於前後端的線上課程,可以參考看看。
Hahow
Hahow 有各式各樣類型的課程,而且是無限次數觀看,對學生或上班族而言,不用擔心被時間綁住六角學院
如果你是初學者,非常推薦六角學院哦!剛開始轉職也是上了六角的課,非常的淺顯易懂,最重要的是,隨時還有線上的助教幫你解決問題!
Udemy
Udemy 裡的課程非常的多,品質普遍不錯,且價格都滿實惠的,CP值很高!也是很多工程師推薦的線上課程網站。