在項目的應用過程當中,須要將後臺返回的二進制文件轉換成咱們想要的文件,在這裏咱們就要用到一個叫Blob的東西;html
Blob:他是js的操做對象類,html5的文件操做對象,blob是用來存儲二進制數據,Blob自己的對象還有兩個屬性,一個是type,一個是size; Blob還有一個叫slice()的屬性,他是用來截取,不過他截取的是二進制數據,通常在大文件上傳時,因爲數據上傳的大小受到限制,因此咱們須要利用slice屬性去切割數據 好了,進入正題,前面是一個對Blob的簡單介紹,接下來,小姐姐帶大家進入如何使用他:html5
正式用法介紹: 1.首先咱們須要建立一個blob對象,咱們經過Blob()構造函數來建立blob對象,以下: var blob=new Blob( ["數據"] , { type:'text/plain' } ) //建立Blob對象api
他的構造函數含有兩個參數: 第一個參數是一個數據數列,他能夠是任何格式的數據,第二個是type,他是一個MIME的嗅探類型,瀏覽器
2.若是咱們咱們須要下載文件,則須要用到a標籤的download屬性;bash
測試.xlsx
, let fileName =
測試.do'c
若是到這裏你發現下載後文件打不開,必定千萬不要打我,這裏咱們在請求api的時候,必定要設置response的類型爲blob responseType: 'blob'; 代碼以下:app
export function apitest(id,params){
return request({
url: `url`,
method: 'get',
params,
responseType: 'blob'
})
}
複製代碼
-----------------------------------我是華麗麗的分割線--------------------------------------------------------------- 因爲後續項目須要兼容火狐瀏覽器,因此咱們須要在代碼中加入兼容火狐瀏覽器函數
link.download = fileName
document.body.appendChild(link)
複製代碼
加入以上的代碼就能夠兼容火狐瀏覽器測試