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

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

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

記錄使用blob對象接收java后臺文件流并下載為xlsx格式的詳細(xì)過程,關(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è)置此項(xiàng),在IE瀏覽器中下載Excel文件時(shí)可彈窗展示文件下載
    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)出失敗"));
  }
}

此時(shí)在瀏覽器的調(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)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

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

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

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

    react-json-editor-ajrm解析錯(cuò)誤與解決方案

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

    React中的refs的使用教程

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

    React Native中的RefreshContorl下拉刷新使用

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

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

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

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

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

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

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

    React簡單介紹

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

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

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

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

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

最新評論

阿坝县| 沅江市| 铅山县| 图木舒克市| 宁陕县| 思南县| 广德县| 阳春市| 濉溪县| 清原| 汝城县| 景宁| 讷河市| 民乐县| 平江县| 清苑县| 昌乐县| 岳阳市| 吴桥县| 阿克陶县| 阳西县| 普格县| 清徐县| 清丰县| 民丰县| 太湖县| 高阳县| 喀喇| 达孜县| 怀化市| 高安市| 宾阳县| 浪卡子县| 富锦市| 公主岭市| 盱眙县| 栖霞市| 四子王旗| 佛冈县| 阳高县| 得荣县|