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)文章
如何在父窗口中得知window.open()出的子窗口關(guān)閉事件
在父窗口中得知window.open()出的子窗口關(guān)閉事件的方法有很多,在本文將為大家詳細介紹下,感興趣的朋友可以參考下2013-10-10利用JavaScript實現(xiàn)春節(jié)倒計時效果(移動端和PC端)
這篇文章主要介紹了通過Html+Css+js如何實現(xiàn)春節(jié)倒計時效果,本文同時介紹了移動端和PC端兩種效果,感興趣的同學(xué)可以跟隨小編一起動手試試2022-01-01讓firefox支持IE的一些方法的javascript擴展函數(shù)代碼
因為一些代碼,只能在IE下實現(xiàn),如果用firefox實現(xiàn)就必須用一些擴展函數(shù)。2010-01-01ie6下png圖片背景不透明的解決辦法使用js實現(xiàn)
我們時常在使用png圖片的時候,在ie6下發(fā)生背景不透明的問題,解決的方法實在是太多了,下面給大家介紹下一個js解決的方式,感興趣的朋友可以了解下的2013-01-01javascript實現(xiàn)漢字轉(zhuǎn)拼音代碼分享
這篇文章主要介紹了javascript實現(xiàn)漢字轉(zhuǎn)拼音代碼分享,非常的實用,從項目中分離出來的,這里分享給大家,有需要的小伙伴可以參考下。2015-04-04