1. 程式人生 > 實用技巧 >vue中blob檔案下載及其它下載方式

vue中blob檔案下載及其它下載方式

一、Blob物件的瞭解

  1:blob表示一個不可變、原始資料的類檔案物件。Blob()建構函式返回一個新的blob物件;blob物件的內容由引數給出的值串聯組成;

  2:new Blob(array, options):

    array:是一個由ArrayBufferBlob和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)
}