功能背景:

项目中使用vue作为框架,以axios方式来发送post请求,后台返回了一个包含了excel文件流的response。

遇到的问题:

调用了接口之后,不报错也不进行下载

遇到问题的原因:

是由于ajax请求只是一个字符型的请求,但是文件是以二进制进行传输的,ajax无法解析后台返回的文件流,因此,调用无反应。

解决:

在调用下载接口的时候,规定responseType:‘blob’,表示后台传来的数据用blob对象接收

以下是解决之后的前端代码

exportExcel(ids){if (ids instanceof Array && ids.length < 1) {this.$notification.error({message: "请选择要导出的数据!",});return;}let formData = new FormData();formData.append("ids",ids)axios({ // 用axios发送post请求method: 'post',url: api.exportDictionaryExcel(), // 请求地址data: formData, // 参数responseType: 'blob' // 表明返回服务器返回的数据类型}).then((res) => { // 处理返回的文件流const content = resconst blob = new Blob([content])console.log(content)const fileName = 'xxx.xlsx'if ('download' in document.createElement('a')) { // 非IE下载const elink = document.createElement('a')elink.download = fileNameelink.style.display = 'none'elink.href = URL.createObjectURL(blob)document.body.appendChild(elink)elink.click()URL.revokeObjectURL(elink.href) // 释放URL 对象document.body.removeChild(elink)} else { // IE10+下载navigator.msSaveBlob(blob, fileName)}})},

以下是解决之后的后端代码

public static void download(Workbook wb, HttpServletResponse response, String returnName) throws IOException{response.setContentType("application/octet-stream;charset=UTF-8");// 保存的文件名,必须和页面编码一致,否则乱码returnName = URLEncoder.encode(returnName, "UTF-8");response.setHeader("Content-Disposition", "attachment;filename=" + returnName);wb.write(response.getOutputStream());}

后端给前端传response下载excel文件相关推荐

  1. 导出 excel 表格(纯前端)和下载excel 文件

    这里下载 excel 主要讲解两种方式.一种是前端导出excel ,另一种方式是通过调用后台提供的接口进行下载 excel. (一)前端导出excel 1.Element组件库中的el-table表格 ...

  2. react接收后端文件_React获取Java后台文件流并下载Excel文件流程解析

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

  3. 前端axios下载excel文件(二进制)的处理方法

    前端axios下载excel文件(二进制)的处理方法 后端生成excel后,前端 click 事件进行下载 ,脱坑记录,亲测有效. lz 使用的是 axios 发起请求 , 首先,介绍一下思路,准备通 ...

  4. 前端下载excel文件功能的三种方法

    1 从后端接收json数据,前端处理生成excel下载 JsonExportExcel的github地址:https://github.com/cuikangjie/JsonExportExcel 这 ...

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

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

  6. php通过ajax下载文件,PHP使用ajax的post方式下载excel文件简单示例

    本文实例讲述了PHP使用ajax的post方式下载excel文件.分享给大家供大家参考,具体如下: 项目需求,前端发起ajax请求,后端生成excel并下载,同时需要在header头中,带上token ...

  7. PHP使用ajax的post方式下载excel文件简单示例

    本文实例讲述了PHP使用ajax的post方式下载excel文件.分享给大家供大家参考,具体如下: 项目需求,前端发起ajax请求,后端生成excel并下载,同时需要在header头中,带上token ...

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

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

  9. h5页面如何预览excel文件_如何使用JavaScript实现前端导入和导出excel文件?(H5编辑器实战复盘)...

    前言 最近笔者终于把H5-Dooring的后台管理系统初步搭建完成, 有了初步的数据采集和数据分析能力, 接下来我们就复盘一下其中涉及的几个知识点,并一一阐述其在Dooring H5可视化编辑器中的解 ...

最新文章

  1. 干货 :数据可视化的10个关键术语
  2. 第八章-数据类、结构
  3. 循环链表(约瑟夫环)的建立及C语言实现
  4. Windows 10 Edge 浏览器续航对比火狐/Chrome
  5. GDCM:gdcm::ExplicitDataElement的测试程序
  6. 【学习笔记】启动Nginx、查看nginx进程、查看nginx服务主进程的方式、Nginx服务可接受的信号、nginx帮助命令、Nginx平滑重启、Nginx服务器的升级
  7. 向算法传递函数:谓词
  8. C# 中的 ConfigurationManager类引用方法
  9. IBM如何拥抱Spark
  10. 前端学习(2839):swiper属性
  11. 页面置换算法——最佳置换算法、最近最少使用算法、先进先出算法、时钟置换算法
  12. 华为路由器ws5200虚拟服务器,想处理垃圾路由吗?那就先入手这款华为WS5200路由器吧...
  13. [整理]CHttpConnection的使用
  14. Oracle 分析函数row_number() over (partition by order by )
  15. python怎么恢复默认窗口,如何恢复python编程环境spyder的窗口
  16. [常微分方程的数值解法系列一] 常微分方程
  17. idea spring boot 修改html等不重启即时生效
  18. 提升你的外国服务器网站国内访问速度~
  19. Service Mesh发展历程
  20. 机器人genghis_iRobot的智慧家居:从扫地机器人和擦地机器人的联动开始

热门文章

  1. Java求解一元二次方程+单元测试(IDEA+Junit)
  2. Linux系统安装教程图文详解
  3. 安卓微信名字彩色字体怎么设置? 微信名字特效设置教程
  4. java毕业生设计寻艺画室网站计算机源码+系统+mysql+调试部署+lw
  5. Java基础:Ubuntu20.04下JDK1.8安装+配置
  6. JDK11安装教程(手把手配置,也适用于其他jdk版本)
  7. RC4原理及其Python的实现
  8. 4G物联网设备使用经验--深刻的教训
  9. 如何做红烧肉好吃又不腻 教你做红烧肉
  10. 引用Bootstrap无法显示样式,可能是安装的版本和参考的文档不相符