js流檔案下載excel無法開啟,亂碼等問題
阿新 • • 發佈:2022-05-25
先打流檔案的返回值,如果時這樣
首先檢視請求的格式
將相應型別responseType設定成'blob'
export function download (params) { return request({ url: '1111', method: 'get', params, responseType: 'blob' }) }
2.型別沒有問題之後查流檔案的返回結果,如果時這樣問題就已經解決了,直接建立a標籤下載就好了
const filestream = res; // 返回的檔案流 const blob = newBlob([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的地方註釋掉就能夠獲取到正常的相應資料了