如何將後臺返回的二進制數據流轉換爲想要的word,doc,或者xsls文件

在項目的應用過程當中,須要將後臺返回的二進制文件轉換成咱們想要的文件,在這裏咱們就要用到一個叫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

代碼如上; 這裏的fileName定義爲你想要導出的文件名以及格式 let fileName = 測試.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)
複製代碼

加入以上的代碼就能夠兼容火狐瀏覽器測試

相關文章
相關標籤/搜索