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

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

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

調接口,根據response.data里的type去判斷,返回的類型
if(response.data.type=='application/json'){
const reader = new FileReader(); //創(chuàng)建一個FileReader實例
reader.readAsText(response.data, 'utf-8'); //讀取文件,結果用字符串形式表示
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對象到此這篇關于JS中如何將blob返回值轉換為json格式的文章就介紹到這了,更多相關blob轉換為json格式內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
如何在父窗口中得知window.open()出的子窗口關閉事件
在父窗口中得知window.open()出的子窗口關閉事件的方法有很多,在本文將為大家詳細介紹下,感興趣的朋友可以參考下2013-10-10
利用JavaScript實現春節(jié)倒計時效果(移動端和PC端)
這篇文章主要介紹了通過Html+Css+js如何實現春節(jié)倒計時效果,本文同時介紹了移動端和PC端兩種效果,感興趣的同學可以跟隨小編一起動手試試2022-01-01
讓firefox支持IE的一些方法的javascript擴展函數代碼
因為一些代碼,只能在IE下實現,如果用firefox實現就必須用一些擴展函數。2010-01-01

