JS中將blob返回值轉(zhuǎn)換為json格式的問(wèn)題小結(jié)
今天遇到一個(gè)問(wèn)題,前端通過(guò)調(diào)取后端接口下載excel,后端返回的是兩種情況:
(1)用戶權(quán)限不足,后端返回json格式,如下圖:
(2)有權(quán)限,能夠正常下載,后端返回二進(jìn)制流,如下圖:
封裝axios時(shí), responseType: ‘blob’,將影響第一種情況讀取reponse為blob,不能直接讀取code和msg,此時(shí)就需要將blob的內(nèi)容轉(zhuǎn)成文件讀取,不能取消responseType: ‘blob’,取消會(huì)影響正常下載
調(diào)接口,根據(jù)response.data里的type去判斷,返回的類型
if(response.data.type=='application/json'){ const reader = new FileReader(); //創(chuàng)建一個(gè)FileReader實(shí)例 reader.readAsText(response.data, 'utf-8'); //讀取文件,結(jié)果用字符串形式表示 reader.onload=function(){//讀取完成后,**獲取reader.result** const {msg} = JSON.parse(reader.result); this.$Message.error(msg); //彈出錯(cuò)誤提示 } }
如果需要顯示二進(jìn)制流:
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(); //點(diǎn)擊下載 document.body.removeChild(downloadElement); //下載完成移除元素 window.URL.revokeObjectURL(href); //釋放掉blob對(duì)象
到此這篇關(guān)于JS中如何將blob返回值轉(zhuǎn)換為json格式的文章就介紹到這了,更多相關(guān)blob轉(zhuǎn)換為json格式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何在父窗口中得知window.open()出的子窗口關(guān)閉事件
在父窗口中得知window.open()出的子窗口關(guān)閉事件的方法有很多,在本文將為大家詳細(xì)介紹下,感興趣的朋友可以參考下2013-10-10利用JavaScript實(shí)現(xiàn)春節(jié)倒計(jì)時(shí)效果(移動(dòng)端和PC端)
這篇文章主要介紹了通過(guò)Html+Css+js如何實(shí)現(xiàn)春節(jié)倒計(jì)時(shí)效果,本文同時(shí)介紹了移動(dòng)端和PC端兩種效果,感興趣的同學(xué)可以跟隨小編一起動(dòng)手試試2022-01-01讓firefox支持IE的一些方法的javascript擴(kuò)展函數(shù)代碼
因?yàn)橐恍┐a,只能在IE下實(shí)現(xiàn),如果用firefox實(shí)現(xiàn)就必須用一些擴(kuò)展函數(shù)。2010-01-01ie6下png圖片背景不透明的解決辦法使用js實(shí)現(xiàn)
我們時(shí)常在使用png圖片的時(shí)候,在ie6下發(fā)生背景不透明的問(wèn)題,解決的方法實(shí)在是太多了,下面給大家介紹下一個(gè)js解決的方式,感興趣的朋友可以了解下的2013-01-01javascript實(shí)現(xiàn)漢字轉(zhuǎn)拼音代碼分享
這篇文章主要介紹了javascript實(shí)現(xiàn)漢字轉(zhuǎn)拼音代碼分享,非常的實(shí)用,從項(xiàng)目中分離出來(lái)的,這里分享給大家,有需要的小伙伴可以參考下。2015-04-04分享12個(gè)非常實(shí)用的JavaScript小技巧
這篇文章主要介紹了分享12個(gè)非常實(shí)用的JavaScript小技巧,這些小技巧可能在你的實(shí)際工作中或許能幫助你解決一些問(wèn)題,需要的朋友可以參考下2016-05-05微信分享invalid signature簽名錯(cuò)誤踩過(guò)的坑
這篇文章主要介紹了微信分享invalid signature簽名錯(cuò)誤踩過(guò)的坑,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04