一、當(dāng)我們前端調(diào)用導(dǎo)出文件接口時(shí),一般情況都會(huì)在請(qǐng)求里添加responseType為blob
?
前幾天遇到一個(gè)問題,后端人員?的這個(gè)接口會(huì)分別出現(xiàn)兩種情況:
1、當(dāng)導(dǎo)出接口請(qǐng)求正常時(shí),我們前端會(huì)收到一個(gè)文件流如下圖
?這時(shí)我們打印一下接口返回的數(shù)據(jù)類型,發(fā)現(xiàn)接口會(huì)返回一個(gè)blob類型的數(shù)據(jù),并且blob中屬性type是application/vnd.ms-excel,這就說明我們導(dǎo)出的文件類型是excel格式的。如下圖?
BLOB (binary large object)----二進(jìn)制大對(duì)象,是一個(gè)可以存儲(chǔ)二進(jìn)制文件的容器。
說白了blob就是一個(gè)二進(jìn)制的對(duì)象,我們可以通過這個(gè)blob對(duì)象直接讀取文件內(nèi)容,但是這時(shí)多次一舉,我們只需要把相應(yīng)的blob對(duì)象直接以a標(biāo)簽導(dǎo)出就可以了,如下圖:
?2、當(dāng)導(dǎo)出接口數(shù)據(jù)過多后端拋出異常時(shí),如下圖?
這時(shí)我們?cè)跒g覽器控制臺(tái)打印出結(jié)果,返現(xiàn)結(jié)果還是一個(gè)blob對(duì)象,但是type變成application/json?
我們想要得到接口返回的結(jié)果,需要對(duì)blob對(duì)象進(jìn)行文件讀取,我們需要用到FileReader
FileReader
?對(duì)象允許 Web 應(yīng)用程序異步讀取存儲(chǔ)在用戶計(jì)算機(jī)上的文件(或原始數(shù)據(jù)緩沖區(qū))的內(nèi)容,使用?File?或?Blob?對(duì)象指定要讀取的文件或數(shù)據(jù)。
我們可以根據(jù)blob對(duì)象的type屬性來判斷,當(dāng)type為application/json時(shí),接口返回的時(shí)一個(gè)json對(duì)象
文章來源:http://www.zghlxwxcb.cn/news/detail-461892.html
其中reader.result就是接口返回的結(jié)果,是一個(gè)json字符串需要轉(zhuǎn)換成對(duì)象。?文章來源地址http://www.zghlxwxcb.cn/news/detail-461892.html
到了這里,關(guān)于前端文件導(dǎo)出設(shè)置responseType為blob時(shí)遇到的問題的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!