记录使用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格式的文件啦~

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易采站长站。

react接收后端文件_React获取Java后台文件流并下载Excel文件流程解析相关推荐

  1. java文件流下载excel_React获取Java后台文件流下载Excel文件

    记录使用blob对象接收java后台文件流并下载为xlsx格式的详细过程,关键部分代码如下. 首先在java后台中设置response中的参数: public void exportExcel(Htt ...

  2. java使用jxl生成excel表格,jsp使用js下载excel文件xls

    java使用jxl生成excel表格,jsp使用js下载excel文件 后端代码 maven jar包 主体代码逻辑 引入的jar包 具体代码段 重点详解 表头和表格内容两种格式 直接将 HttpSe ...

  3. java根据Freemarker模板渲染出Excel文件并在浏览器中下载

    **java根据Freemarker模板渲染出Excel文件并在浏览器中下载** 准备工作 1.导入的依赖 2.创建模板 Freemrker语法大全: [Freemarker语法使用请点击该链接跳转学 ...

  4. 阿里开源(EasyExcel):使用Java将数据导出为Excel表格、带样式----》java web下载 Excel文件

    目录 一.技术选型 二.实现过程 1.导入依赖 2.编写工具类 EasyExcelUtil 3.公用参数类 EasyExcelParams 4.表格样式实体类 MyWriteHandler 5.数据实 ...

  5. java实现excel文件上传_java相关:SpringMVC下实现Excel文件上传下载

    java相关:SpringMVC下实现Excel文件上传下载 发布于 2020-6-21| 复制链接 摘记: 在实际应用中,经常会遇到上传Excel或者下载Excel的情况,比如导入数据.下载统计数据 ...

  6. java struts2 excel上传_文件上传方法,使用Struts2,实现Excel文件读取并写入数据库技术...

    文件上传方法,使用Struts2,实现Excel文件读取并写入数据库技术 如题:文件信息的批量导入-- 项目中经常会遇到客户的一些单表信息的数据批量导入,也就是提供定制Excel表,再把Excel表中 ...

  7. java文件指针,Java 测试文件指针,java测试指针,两种方法打开文件并进行内

    Java 测试文件指针,java测试指针,两种方法打开文件并进行内 两种方法打开文件并进行内容定位package com.ronsoft.books.nio.channels;import java. ...

  8. Java读取、写入、处理Excel文件中的数据

    在日常工作中,我们常常会进行文件读写操作,除去我们最常用的纯文本文件读写,更多时候我们需要对Excel中的数据进行读取操作,本文将介绍Excel读写的常用方法,希望对大家学习Java读写Excel会有 ...

  9. 解决java web中safari浏览器下载后文件中文乱码问题

    解决java web中safari浏览器下载后文件中文乱码问题 参考文章: (1)解决java web中safari浏览器下载后文件中文乱码问题 (2)https://www.cnblogs.com/ ...

最新文章

  1. shell脚本中的输入输出
  2. 中兴通讯已在多个国家和地区商用了安全领域的解决方案
  3. Android系统自带样式(android:theme)
  4. 从零开始实现 ASP.NET Core MVC 的插件式开发(九) - 如何启用预编译视图
  5. 【假期福利】用尺子丈量宇宙:古人竟是这样理解我们的地球
  6. 图解ThreadLocal核心原理
  7. 原生编辑器_微信小程序 广告原生模板广告
  8. JAXB XML和Bean互相转换
  9. linux之shell快速入门系列<8> | shell工具cut、sed、awk、sort
  10. android 随身无线网卡,让小锐WiFi支持USB无线网卡/随身WiFi(附各种“随身wifi”芯片型号)...
  11. jdy视频直播流采集分析
  12. 显卡煲机测试软件,铁三角耳机煲机方法三分钟让您学会煲耳机
  13. 使用微信扫描关注公众号登陆的方法
  14. 2022年中国大学排行榜出炉~
  15. 基于Java的实验室预约管理系统
  16. 【废了-准备删除01】渗透测试靶机搭建——基于WAMP的drupal7.x管理系统
  17. 解决win10系统点击飞行模式后找不到WiFi连接问题
  18. Anaconda中pkgs文件夹详解
  19. 力扣解法汇总553-最优除法
  20. GA遗传算法及相关代码

热门文章

  1. 马上有钱:揭密25种成为有钱人的方法(图)
  2. C语言struct关键字详解—结构体
  3. GCC 命令选项使用详解
  4. VS Code 的常用快捷键
  5. linux 复制指定目录下的全部文件到另一个目录中,linux cp 文件夹
  6. rz、sz 命令 安装(Xshell 安装)
  7. Flask-1-05-CookieSession
  8. python+selenium十:selenium的二次封装
  9. MAC OS上JAVA1.6 升级1.7,以及 maven3.2.1配置
  10. 网页图表Highcharts实践教程之标签组与载入动画