vue使用axios導(dǎo)出后臺返回的文件流為excel表格詳解
使用axios導(dǎo)出后臺返回的文件流為excel
之前有一個(gè)需求是要使用post請求,導(dǎo)出后臺返回的文件流并在表格中使用,大概思路為使用axios請求回?cái)?shù)據(jù),定義數(shù)據(jù)為blob格式,再創(chuàng)建一個(gè)a標(biāo)簽自調(diào)就可以完成了
<button @click="download">導(dǎo)出</button>
data() { ? ? return { ? ? ? isClick: true, ? ? }; ? },
download() { // 簡單的一個(gè)小節(jié)流 if (!this.isClick) { return; } this.isClick = false; axios({ method: "POST", url: "", data: {}, responseType: "blob", //定義為blob }).then((res) => { const file = new Blob([res.data], { type: "application/vnd.ms-excel" }); const url = URL.createObjectURL(file); const a = document.createElement("a"); a.href = url; a.click(); this.isClick = true; }); },
vue axios導(dǎo)出excel亂碼解決
最近,公司讓我寫一個(gè)導(dǎo)出excel的功能,由于已經(jīng)有了前人寫好的代碼,我就直接拿著他的代碼改了一下,結(jié)果在前端下載好之后直接出現(xiàn)了亂碼問題。
開始我懷疑自己哪里寫錯(cuò)了,經(jīng)過仔細(xì)的檢查,并沒有問題。而且在后臺生成的excel并沒有任何問題。
后來我以為是讀入字節(jié)流出現(xiàn)了問題,經(jīng)過調(diào)試對比也是正常的。唯一的問題就是通過后臺返回的res出現(xiàn)了亂碼。
上網(wǎng)搜索,都說這樣寫就行了。
和我寫的一樣。在經(jīng)過了一天的檢查還是無果后,我問了問前輩,原來問題出在這里。
.post("/TasksTable/ExportData",{ item: { //傳入項(xiàng)目id,根據(jù)項(xiàng)目id來 搜素任務(wù) project_id: this.tasksinfo, }, //頁的索引和頁的長度。 PageSize: this.pageSize, PageIndex: this.currentPage, //定義類型 headers: { "Content-Type": "application/x-www-form-urlencoded", }, responseType:'blob', })
如圖所示,我用一個(gè)花括號把我傳入的數(shù)據(jù)和 headers、responseType放在了一起,所以headers和responseType無效了。
.post("/TasksTable/ExportData",{ item: { //傳入項(xiàng)目id,根據(jù)項(xiàng)目id來 搜素任務(wù) project_id: this.tasksinfo, }, //頁的索引和頁的長度。 PageSize: this.pageSize, PageIndex: this.currentPage, }, { //定義類型 headers: { "Content-Type": "application/x-www-form-urlencoded", }, responseType:'blob', })
把他們用兩個(gè)花括號隔開就可以了。最終成功導(dǎo)出!
找不到原因的感覺真頭疼啊,看了一天沒找到原因,最終通過求助才解決了。哎,這編碼之路啊~
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue+spring boot實(shí)現(xiàn)校驗(yàn)碼功能
這篇文章主要為大家詳細(xì)介紹了vue+spring boot實(shí)現(xiàn)校驗(yàn)碼功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-05-05vue-mounted中如何處理data數(shù)據(jù)
這篇文章主要介紹了vue-mounted中如何處理data數(shù)據(jù)方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03詳解Vue中數(shù)據(jù)可視化詞云展示與詞云的生成
數(shù)據(jù)可視化是現(xiàn)代Web應(yīng)用程序中的一個(gè)重要組成部分,詞云是一種非常流行的數(shù)據(jù)可視化形式,可以用來展示文本數(shù)據(jù)中的主題和關(guān)鍵字,本文我們將介紹如何在Vue中使用詞云庫進(jìn)行數(shù)據(jù)可視化詞云展示和詞云生成,需要的可以參考一下2023-06-06