1. 程式人生 > 其它 >js流檔案下載excel無法開啟,亂碼等問題

js流檔案下載excel無法開啟,亂碼等問題

先打流檔案的返回值,如果時這樣

首先檢視請求的格式

  將相應型別responseType設定成'blob'

export function download (params) {
  return request({
    url: '1111',
    method: 'get',
    params,
    responseType: 'blob'
  })
}

2.型別沒有問題之後查流檔案的返回結果,如果時這樣問題就已經解決了,直接建立a標籤下載就好了

        const filestream = res;  // 返回的檔案流
        const blob = new
Blob([filestream], {type: 'application/vnd.ms-excel'}); const a = document.createElement('a'); const href = window.URL.createObjectURL(blob); // 建立下載連線 a.href = href; a.download = '下載' document.body.appendChild(a); a.click(); document.body.removeChild(a);
// 下載完移除元素 window.URL.revokeObjectURL(href); // 釋放掉blob物件

 此時可能通過

將new Blob([data], {type: 'application/vnd.ms-excel'}))

改為了:new Blob(['\uFEFF' +data], {type: application/vnd.ms-excel;charset=utf-8'}))

強行讓excel可以開啟但是內容還是亂碼

3.如果更改之後任然亂碼,可能是引入了mock.js的原因,因為mock.js會攔截所有響應資料(不管用沒用到mock)將響應資料強行轉換成json格式,導致返回的流檔案出現亂碼,將引入mock的地方註釋掉就能夠獲取到正常的相應資料了