最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

React獲取Java后臺文件流并下載Excel文件流程解析

 更新時間:2020年06月17日 10:26:54   作者:不少于4個字節(jié)  
這篇文章主要介紹了React獲取Java后臺文件流下載Excel文件,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

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

首先在java后臺中設(shè)置response中的參數(shù):

public void exportExcel(HttpServletResponse response, String fileName, String sheetName,
            List<String> titleRow, List<List<String>> dataRows) {
  OutputStream out = null;
  try {
    // 設(shè)置瀏覽器解析文件的mime類型,如果js中已設(shè)置,這里可以不設(shè)置
    // response.setContentType("application/vnd.ms-excel;charset=gbk");
    // 設(shè)置此項,在IE瀏覽器中下載Excel文件時可彈窗展示文件下載
    response.setHeader("Content-Disposition", 
              "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
   	// 允許瀏覽器訪問header中的FileName
   	response.setHeader("Access-Control-Expose-Headers", "FileName");
    // 設(shè)置FileName,轉(zhuǎn)碼防止中文亂碼
    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("導(dǎo)出失敗", e);
      }
    }
    throw Exceptions.fail(ErrorMessage.errorMessage("500", "導(dǎo)出失敗"));
  }
}

此時在瀏覽器的調(diào)試面板中可以看到導(dǎo)出接口的response header參數(shù)如下:

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: {
      參數(shù)名1: 參數(shù)值1,
      參數(shù)名2: 參數(shù)值2
    },
    // 設(shè)置responseType對象格式為blob
    responseType: "blob"
  }).then(res => {
	   // 創(chuàng)建下載的鏈接
    const url = window.URL.createObjectURL(new Blob([res.data],
		// 設(shè)置該文件的mime類型,這里對應(yīng)的mime類型對應(yīng)為.xlsx格式                          
      {type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'}));
    const link = document.createElement('a');
    link.href = url;
   	// 從header中獲取服務(wù)端命名的文件名
   	const fileName = decodeURI(res.headers['filename']);
    link.setAttribute('download', fileName);
    document.body.appendChild(link);
    link.click();
  });
};


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

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • React?組件權(quán)限控制的實現(xiàn)

    React?組件權(quán)限控制的實現(xiàn)

    本文主要介紹了React?組件權(quán)限控制的實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • react-json-editor-ajrm解析錯誤與解決方案

    react-json-editor-ajrm解析錯誤與解決方案

    由于歷史原因,項目中 JSON 編輯器使用的是 react-json-editor-ajrm,近期遇到一個嚴重的展示錯誤,傳入編輯器的數(shù)據(jù)與展示的不一致,這是產(chǎn)品和用戶不可接受的,本文給大家介紹了react-json-editor-ajrm解析錯誤與解決方案,需要的朋友可以參考下
    2024-06-06
  • React中的refs的使用教程

    React中的refs的使用教程

    本篇文章主要介紹了React中的refs的使用教程,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • React Native中的RefreshContorl下拉刷新使用

    React Native中的RefreshContorl下拉刷新使用

    本篇文章主要介紹了React Native中的RefreshContorl下拉刷新使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • React-Native之TextInput組件的設(shè)置以及如何獲取輸入框的內(nèi)容

    React-Native之TextInput組件的設(shè)置以及如何獲取輸入框的內(nèi)容

    這篇文章主要介紹了React-Native之TextInput組件的設(shè)置以及如何獲取輸入框的內(nèi)容問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • vite+react+tailwindcss的簡單使用方式

    vite+react+tailwindcss的簡單使用方式

    這篇文章主要介紹了vite+react+tailwindcss的簡單使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • react+axios實現(xiàn)github搜索用戶功能(示例代碼)

    react+axios實現(xiàn)github搜索用戶功能(示例代碼)

    這篇文章主要介紹了react+axios實現(xiàn)搜索github用戶功能,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • React簡單介紹

    React簡單介紹

    React 是一個用于構(gòu)建用戶界面的 JavaScript 庫,主要用于構(gòu)建 UI,而不是一個 MVC 框架,React 擁有較高的性能,代碼邏輯非常簡單,越來越多的人已開始關(guān)注和使用它
    2017-05-05
  • react-native 實現(xiàn)購物車滑動刪除效果的示例代碼

    react-native 實現(xiàn)購物車滑動刪除效果的示例代碼

    這篇文章主要介紹了react-native 實現(xiàn)購物車滑動刪除效果的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • React高階組件優(yōu)化文件結(jié)構(gòu)流程詳解

    React高階組件優(yōu)化文件結(jié)構(gòu)流程詳解

    高階組件就是接受一個組件作為參數(shù)并返回一個新組件(功能增強的組件)的函數(shù)。這里需要注意高階組件是一個函數(shù),并不是組件,這一點一定要注意,本文給大家分享React 高階組件HOC使用小結(jié),一起看看吧
    2023-01-01

最新評論

光泽县| 福贡县| 大邑县| 巢湖市| 麦盖提县| 高安市| 汾阳市| 罗源县| 海原县| 扎兰屯市| 夏津县| 宜州市| 神农架林区| 东丽区| 依安县| 绥中县| 喀喇沁旗| 定南县| 邓州市| 南丰县| 勃利县| 富川| 鄂尔多斯市| 同江市| 哈密市| 简阳市| 蚌埠市| 石家庄市| 泾川县| 泸溪县| 乌兰察布市| 响水县| 玛沁县| 綦江县| 河间市| 定日县| 绍兴县| 南川市| 柳林县| 通城县| 邯郸市|