react接收后端文件_React獲取Java后臺文件流并下載Excel文件流程解析

記錄使用blob對象接收java后臺文件流并下載為xlsx格式的詳細過程,關鍵部分代碼如下。

首先在java后臺中設置response中的參數:

public void exportExcel(HttpServletResponse response, String fileName, String sheetName,

List titleRow, List> dataRows) {

OutputStream out = null;

try {

// 設置瀏覽器解析文件的mime類型,如果js中已設置,這里可以不設置

// response.setContentType("application/vnd.ms-excel;charset=gbk");

// 設置此項,在IE瀏覽器中下載Excel文件時可彈窗展示文件下載

response.setHeader("Content-Disposition",

"attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));

// 允許瀏覽器訪問header中的FileName

response.setHeader("Access-Control-Expose-Headers", "FileName");

// 設置FileName,轉碼防止中文亂碼

response.setHeader("FileName", URLEncoder.encode(fileName, "UTF-8"));

out = response.getOutputStream();

ExcelUtils.createExcelStream(out, sheetName, titleRow, dataRows);

out.close();

} catch (Exception e) {

if (Objects.nonNull(out)) {

try {

out.close();

} catch (IOException e1) {

log.error("導出失敗", e);

}

}

throw Exceptions.fail(ErrorMessage.errorMessage("500", "導出失敗"));

}

}

此時在瀏覽器的調試面板中可以看到導出接口的response header參數如下:

access-control-allow-credentials: true

access-control-allow-methods: GET,POST,PUT,DELETE,OPTIONS

access-control-allow-origin: http://local.dasouche-inc.net:8081

access-control-expose-headers: FileName

connection: close

content-type: application/vnd.ms-excel;charset=gbk

date: Sun, 29 Mar 2020 10:59:54 GMT

filename: %E4%B8%BB%E6%92%AD%E5%88%97%E8%A1%A8166296222340726.xlsx

接下來我們在前端代碼中獲取文件流:

handleExport = () => {

axios.post(`下載文件的接口請求路徑`, {}, {

params: {

參數名1: 參數值1,

參數名2: 參數值2

},

// 設置responseType對象格式為blob

responseType: "blob"

}).then(res => {

// 創建下載的鏈接

const url = window.URL.createObjectURL(new Blob([res.data],

// 設置該文件的mime類型,這里對應的mime類型對應為.xlsx格式

{type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'}));

const link = document.createElement('a');

link.href = url;

// 從header中獲取服務端命名的文件名

const fileName = decodeURI(res.headers['filename']);

link.setAttribute('download', fileName);

document.body.appendChild(link);

link.click();

});

};

至此就可以愉快地下載xlsx格式的文件啦~

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持易采站長站。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/455197.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/455197.shtml
英文地址,請注明出處:http://en.pswp.cn/news/455197.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python常見的170道面試題全解析答案

個人博客點這里 語言特性 1. 談談對 Python 和其他語言的區別 答:Python 是一門語法簡潔優美,功能強大無比,應用領域非常廣泛,具有強大完備的第三方庫,他是一門強類型的可移植、可擴展,可嵌入的解釋型編程語言,屬于動態語言。 …

WMA文件信息格式分析及代碼

WMA文件信息格式分析及代碼 收藏 ASF文件和WMA文件格式差不多。具體請看下面我寫的代碼。文件分析根據mplayer其中的asfhead.c提供的代碼進行分析。mplayer只解除出了標準的wma頭信息,其擴展信息并沒有解析出來。代碼如下. /*每一個WMA文件,它的頭16個字…

[No0000101]JavaScript-基礎課程1

JavaScript 是一種輕量級的編程語言,很容易學習,同時也是一種被廣泛用于客戶端Web開發的腳本語言。通過本課程學習,我們可以了解到JavaScript的基本語法知識,以及怎樣使用它去創建簡單的游戲和應用。 1.獲取字符的長度 "youN…

研究人員發現Office Word 0Day攻擊 這個漏洞繞過了word宏安全設置 綠盟科技、McAfee及FireEye發出警告...

這次的0Day漏洞確實很厲害,以往攻擊者誘使用戶點擊Word文檔,由于其中包含了惡意腳本,大多數需要用戶啟用了宏。但這次的漏洞不是,受害者無需啟用宏,也會中招,而且漏洞覆蓋Windows所有版本(包括W…

秀米svg點擊顯示另一張圖_SVG的雷,你踩過了沒?

原標題:SVG的雷,你踩過了沒?隨著SVG互動布局的出現和在H5的應用越來越多,不少小伙伴們會想在秀米里上傳自己制作的SVG圖形。秀米的首頁頂部教程收錄了一篇關于SVG圖形的講解:「秀米的SVG圖片」,里面主要介紹…

關于C10K問題詳解-突破單機性能是高性能網絡編程

本文轉自:https://www.jianshu.com/p/ba7fa25d3590 C10K問題由來 隨著互聯網的普及,應用的用戶群體幾何倍增長,此時服務器性能問題就出現。最初的服務器是基于進程/線程模型。新到來一個TCP連接,就需要分配一個進程。假如有C10K,…

數據中心傳輸需求成以太網市場巨大推動力

近日,市場研究機構Infonetics作出評估稱,數據中心以太網市場將迎來全面發展的勢頭,其驅動力則在于當前數據中心以太網絡交換接口由10Gbps產品向25Gbps乃至50Gbps標準的大規模升級。 根據對2014年第三季度的市場銷售情況研究,該公司…

Gina DLL

Windows的開機密碼認證模塊一般是由Gina DLL完成的。在NT/2000中交互式的登陸支持是由WinLogon調用GINA DLL實現的,GINA DLL提供了一個交互式的界面為用戶登陸提供認證請求。1.Gina原理WinLogon會和GINA DLL進行交互,缺省是MSGINA.DLL(在System32目錄下)…

ultilize什么意思_ultilize是什么意思

1. We also ultilize the supports of NSFC for other valuable researches.我們還利用基金支持,做了其他一些有價值的科研工作。2. Recover the second segment with all due haste, ultilize any means necessary.盡快取回第二部分,使用任何必要的手段…

HTML,CSS的class與id命名規則

個人博客點這里 最重要的部分先說(命名書寫格式) 常見的格式有:連接符(search-btn)、下劃線、全小(searchbox)、小駝峰(searchBox)。 現在用得多廣泛的還是第一種使用連接符,易讀…

主打“云安全” 迅雷系帝恩思登陸新三板

ZD至頂網安全頻道 06月14日 綜合消息: 6月14日上午,帝恩思(837018)敲響了登陸新三板的鐘聲。作為帝恩思的重要股東,迅雷(NASDAQ:XNET)CEO鄒勝龍與帝恩斯董事長王宇杰、總經理許淵培等人一同參加了這一儀式。 帝恩斯是一…

UESTC 1636 夢后樓臺高鎖,酒醒簾幕低垂

題意&#xff1a;求一條路徑&#xff0c;使得這條邊連接1到n&#xff0c;求邊權值的最大值與最小值的差 題解&#xff1a;最小生成樹&#xff0c;對邊權排序&#xff0c;可以枚舉邊的最大和最小的值&#xff0c;判斷能否使得1和n連通 #include <bits/stdc.h> #define ll …

wav文件格式分析詳解

wav文件格式分析詳解 作者&#xff1a;曹京日期&#xff1a;2006年7月17日 一、綜述 WAVE文件作為多媒體中使用的聲波文件格式之一&#xff0c;它是以RIFF格式為標準的。RIFF是英文Resource Interchange File Format的縮寫&#xff0c;每個WAVE文件的頭四個字節便是“RIFF…

pg數據庫開啟遠程連接_Postgresql開啟遠程訪問的步驟全紀錄

前言安裝PostgreSQL數據庫之后&#xff0c;默認是只接受本地訪問連接。如果想在其他主機上訪問PostgreSQL數據庫服務器&#xff0c;就需要進行相應的配置。下面話不多說了&#xff0c;來一起看看詳細的介紹吧。步驟如下&#xff1a;要在Postgresql中允許遠程訪問,需要設置如下2…

Vue.js前后端分離2

個人博客點這里 內容回顧 - 過濾器 - 局部的過濾器 // 只能在當前組件內部使用 filters:function(val,a,b){// 執行過濾處理邏輯,(添油加醋的內容)return xxx; }- 全局的過濾器 // 聲明創建 在任何組件中都能使用 Vue.filter("myTime",function() {// 添油加醋的…

WORD列表縮進的文本起始點

Figure 1 Figure 2 Figure 3 編號位置以刻度尺為起點0.74厘米&#xff08;2個字符間距&#xff09;&#xff0c;文本縮進以刻度尺為起點2.96厘米&#xff08;8個字符間距&#xff09; 以上兩者相減得到的值正好特殊格式懸掛縮進的值2.22厘米 Figure 4 上圖看到&#xff0c;文本…

無人車火了 百度是如何做到的?

ZD至頂網服務器頻道 03月02日 新聞消息&#xff08;文/于澤&#xff09;&#xff1a;百度無人車可謂狠狠的吸足了大眾的眼球。一個問題逐漸出現在我們心中&#xff0c;為什么百度這樣的互聯網企業會推出無人車&#xff0c;似乎搜索引擎和無人車之間的關聯度并不是很高。 謎題的…

測繪技術設計規定最新版_測繪技術設計規定

《》是中國測繪出版社出版圖書&#xff0c;下面小編給大家介紹關于的相關資料&#xff0c;希望對您有所幫助。《》內容國家測繪地理信息局法規與行業管理司編著的《(2014)》是一本關于測繪資質管理規定和測繪資質分級標準的書。具體內容包括&#xff1a;大地測量專業標準、測繪…

各類音頻格式解析

CD格式&#xff1a;天籟之音 當今世界上音質最好的音頻格式是什么&#xff1f;當然是CD了。因此要講音頻格式&#xff0c;CD自然是打頭陣的先鋒。在大多數播放軟件的“打開文件類型”中&#xff0c;都可以看到&#xff0a;.cda格式&#xff0c;這就是CD音軌了。標準CD格式也就是…

Error: Java heap space

在chd中 的hive中執行 (select count (*)) 或者mr程序都報Error: Java heap space 4、io.sort.mb 的作用 排序所使用的內存數量。 默認值&#xff1a;100M&#xff0c;需要與mapred.child.java.opts相配 默認&#xff1a;-Xmx200m。 不能超過mapred.child.java.opt設置&…