vue中blob檔案下載及其它下載方式
阿新 • • 發佈:2020-08-02
一、Blob物件的瞭解
1:blob表示一個不可變、原始資料的類檔案物件。Blob()建構函式返回一個新的blob物件;blob物件的內容由引數給出的值串聯組成;
2:new Blob(array, options):
array:是一個由ArrayBuffer、
Blob和DOMSting等物件構成的Array,它將會被放在Blob;
options:物件中有兩個引數: type:預設為"",表示將會被放入到blob中陣列內容的MIME型別;endings:用於指定包含行結束符的字串如何被寫入;
二、URL api以及 URL.createObjectURL()
1:URL介面是用於解析、構造,規範化和編碼的URLs;
2:new URL() 建立並返回一個URL()物件,該URL物件引用使用絕對URL字串,相對URL字串和基本URL字串指定的URL;
3:屬性: hash、host、hostname、href、search等
4:靜態方法:
createObjecURL() :返回一個DOMSting,包含一個唯一的blob連結,這個url的生命週期和建立它的視窗document繫結
revokeObjectURL():銷燬之前使用createObjectURL建立的url
三、接收並下載檔案流(blob物件)
// 1、接收伺服器返回資料時,需設定 responseType: 'blob'//2、建立一個臨時的url指向blob物件 var blob = new Blob(array, options) var url = URL.createObjectURL(blob) // 3、建立之後可以模擬一系列的操作 var a = documen.createElement('a')
a.href = url // 給a標籤賦上下載地址
a.style.display = 'none' // 讓a標籤不顯示
document.body.appendChild('a') // 將a標籤append到文字中 a.click() // a標籤自點選 // 4、釋放這個臨時的物件URL URL.revokeObjectURL(blob)
# 下方圖片是自己專案中使用的方法 - 僅供參考
四、通過iframe方式下載
<el-button size="mini" class="filter-item" type="primary" icon="el-icon-download" @click="handleExport(scope.row)">匯出</el-button> // method方法: handleExport(row) { var elemIF = document.createElement('iframe') elemIF.src = 'user/downloadExcel?snapshotTime=' + formatDate(new Date(row.snapshotTime), 'yyyy-MM-dd hh:mm') + '&category=' + row.category elemIF.style.display = 'none' document.body.appendChild(elemIF) }