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格式的文件啦~
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易采站长站。
react接收后端文件_React获取Java后台文件流并下载Excel文件流程解析相关推荐
- java文件流下载excel_React获取Java后台文件流下载Excel文件
记录使用blob对象接收java后台文件流并下载为xlsx格式的详细过程,关键部分代码如下. 首先在java后台中设置response中的参数: public void exportExcel(Htt ...
- java使用jxl生成excel表格,jsp使用js下载excel文件xls
java使用jxl生成excel表格,jsp使用js下载excel文件 后端代码 maven jar包 主体代码逻辑 引入的jar包 具体代码段 重点详解 表头和表格内容两种格式 直接将 HttpSe ...
- java根据Freemarker模板渲染出Excel文件并在浏览器中下载
**java根据Freemarker模板渲染出Excel文件并在浏览器中下载** 准备工作 1.导入的依赖 2.创建模板 Freemrker语法大全: [Freemarker语法使用请点击该链接跳转学 ...
- 阿里开源(EasyExcel):使用Java将数据导出为Excel表格、带样式----》java web下载 Excel文件
目录 一.技术选型 二.实现过程 1.导入依赖 2.编写工具类 EasyExcelUtil 3.公用参数类 EasyExcelParams 4.表格样式实体类 MyWriteHandler 5.数据实 ...
- java实现excel文件上传_java相关:SpringMVC下实现Excel文件上传下载
java相关:SpringMVC下实现Excel文件上传下载 发布于 2020-6-21| 复制链接 摘记: 在实际应用中,经常会遇到上传Excel或者下载Excel的情况,比如导入数据.下载统计数据 ...
- java struts2 excel上传_文件上传方法,使用Struts2,实现Excel文件读取并写入数据库技术...
文件上传方法,使用Struts2,实现Excel文件读取并写入数据库技术 如题:文件信息的批量导入-- 项目中经常会遇到客户的一些单表信息的数据批量导入,也就是提供定制Excel表,再把Excel表中 ...
- java文件指针,Java 测试文件指针,java测试指针,两种方法打开文件并进行内
Java 测试文件指针,java测试指针,两种方法打开文件并进行内 两种方法打开文件并进行内容定位package com.ronsoft.books.nio.channels;import java. ...
- Java读取、写入、处理Excel文件中的数据
在日常工作中,我们常常会进行文件读写操作,除去我们最常用的纯文本文件读写,更多时候我们需要对Excel中的数据进行读取操作,本文将介绍Excel读写的常用方法,希望对大家学习Java读写Excel会有 ...
- 解决java web中safari浏览器下载后文件中文乱码问题
解决java web中safari浏览器下载后文件中文乱码问题 参考文章: (1)解决java web中safari浏览器下载后文件中文乱码问题 (2)https://www.cnblogs.com/ ...
最新文章
- shell脚本中的输入输出
- 中兴通讯已在多个国家和地区商用了安全领域的解决方案
- Android系统自带样式(android:theme)
- 从零开始实现 ASP.NET Core MVC 的插件式开发(九) - 如何启用预编译视图
- 【假期福利】用尺子丈量宇宙:古人竟是这样理解我们的地球
- 图解ThreadLocal核心原理
- 原生编辑器_微信小程序 广告原生模板广告
- JAXB XML和Bean互相转换
- linux之shell快速入门系列<8> | shell工具cut、sed、awk、sort
- android 随身无线网卡,让小锐WiFi支持USB无线网卡/随身WiFi(附各种“随身wifi”芯片型号)...
- jdy视频直播流采集分析
- 显卡煲机测试软件,铁三角耳机煲机方法三分钟让您学会煲耳机
- 使用微信扫描关注公众号登陆的方法
- 2022年中国大学排行榜出炉~
- 基于Java的实验室预约管理系统
- 【废了-准备删除01】渗透测试靶机搭建——基于WAMP的drupal7.x管理系统
- 解决win10系统点击飞行模式后找不到WiFi连接问题
- Anaconda中pkgs文件夹详解
- 力扣解法汇总553-最优除法
- GA遗传算法及相关代码