一、需求
后端導入Excel之后邪驮,以Excel的方式反饋每一條處理的結(jié)果莫辨,但有時可能上傳的文件錯誤或者權(quán)限限制的錯誤提示,需要返回json數(shù)據(jù)
二毅访、問題
若設置 Axios 的responseType為 blob沮榜,只能接收Excel文件,json數(shù)據(jù)沒法處理
三喻粹、解決方案
Axios 發(fā)送請求指定為 responseType 為 arraybuffer
若 Response 的 Content-Type 為 application/json蟆融,則先將返回的數(shù)據(jù)轉(zhuǎn)換成字符串,然后再轉(zhuǎn)換為 JSON 守呜。
若 Response 的 Content-Type 為 application/vnd.ms-excel型酥,則下載Excel
if (response.headers['content-type'].indexOf('application/json') > -1) {
const result = JSON.parse(Buffer.from(response.data).toString('utf8'))
} else if (response.headers['content-type'].indexOf('application/vnd.ms-excel') > -1) {
window.URL.createObjectURL(new Blob([data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }))
}