JS中將blob返回值轉(zhuǎn)換為json格式的問題小結(jié)
今天遇到一個問題,前端通過調(diào)取后端接口下載excel,后端返回的是兩種情況:
(1)用戶權(quán)限不足,后端返回json格式,如下圖:

(2)有權(quán)限,能夠正常下載,后端返回二進制流,如下圖:

封裝axios時, responseType: ‘blob’,將影響第一種情況讀取reponse為blob,不能直接讀取code和msg,此時就需要將blob的內(nèi)容轉(zhuǎn)成文件讀取,不能取消responseType: ‘blob’,取消會影響正常下載

調(diào)接口,根據(jù)response.data里的type去判斷,返回的類型
if(response.data.type=='application/json'){
const reader = new FileReader(); //創(chuàng)建一個FileReader實例
reader.readAsText(response.data, 'utf-8'); //讀取文件,結(jié)果用字符串形式表示
reader.onload=function(){//讀取完成后,**獲取reader.result**
const {msg} = JSON.parse(reader.result);
this.$Message.error(msg); //彈出錯誤提示
}
}如果需要顯示二進制流:
var blob = new Blob([response.data]);
var downloadElement = document.createElement("a");
var href = window.URL.createObjectURL(blob); //創(chuàng)建下載的鏈接
downloadElement.href = href;
downloadElement.download = "下載的文件"+ ".xlsx"; //下載后文件名
document.body.appendChild(downloadElement);
downloadElement.click(); //點擊下載
document.body.removeChild(downloadElement); //下載完成移除元素
window.URL.revokeObjectURL(href); //釋放掉blob對象到此這篇關(guān)于JS中如何將blob返回值轉(zhuǎn)換為json格式的文章就介紹到這了,更多相關(guān)blob轉(zhuǎn)換為json格式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
javascript開發(fā)隨筆一 preventDefault的必要
給a做按鈕的click事件加preventDefault阻止瀏覽器的默認(rèn)行為貌似是印象中必須的事情2011-11-11
鼠標(biāo)選擇動態(tài)改變網(wǎng)頁背景顏色的JS代碼
這篇文章主要介紹了鼠標(biāo)選擇動態(tài)改變網(wǎng)頁背景顏色的JS代碼,有需要的朋友可以參考一下2013-12-12
JS將時間的標(biāo)準(zhǔn)格式和時間戳格式和2022-01-27?00:00:00(年月日時分秒)格式相互轉(zhuǎn)換(最新推薦)
這篇文章主要介紹了JS如何將時間的標(biāo)準(zhǔn)格式和時間戳格式和2022-01-27?00:00:00(年月日時分秒)格式相互轉(zhuǎn)換,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-05-05
javascript currying返回函數(shù)的函數(shù)
currying函數(shù)是一種返回函數(shù)的函數(shù),是閉包最偉大的應(yīng)用之一。有關(guān)閉包更詳細的定義可參見這里與這里。如下currying函數(shù)的一種定義。2009-11-11

