axios文件下载使用后端传递的名称

java后端通过HttpServletResponse 返回文件流

在Content-Disposition中插入文件名
一定要设置Access-Control-Expose-Headers,代表跨域该Content-Disposition返回Header可读,如果没有,前端是取不到Content-Disposition的,可以在统一的配置里添加

response.setContentType("application/vnd.ms-excel;charset=utf-8");
response.setCharacterEncoding("UTF-8");
// 跨域暴露Header属性Content-Disposition
response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
//test.xls是弹出下载对话框的文件名,不能为中文,中文请自行编码
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(byType.getName() , StandardCharsets.UTF_8) + ".xls");

在这里插入图片描述

vue前端通过 axios接收文件

老生常谈的 blob或者arraybuffer
这里以arraybuffer举例

export const exportExcel=(data: Object)=>{return request.get( option: {url:'/scrm/customer/exportExcel'data,responseType:'arraybuffer'})
})

找你的axios封装

vue2找 request.js
vue3找service.ts
或者你们自己封装的文件
找到里边的响应拦截器

request.interceptors.response.use
service.interceptors.response.use

在返回成功的前提下单独处理
直接返回response
如果你们封装的axios跟没封装一样可以忽略

if (response.request.responseType === 'blob' || response.request.responseType === 'arraybuffer') {return response
}

封装个统一的方法
TS

const download = {
object: ({data, headers}, fileName :string, contentType: string) => {try {const uri =headers["content-disposition"].split(";")[1].split("filename=")[1];fileName = decodeURIComponent(uri)contentType = headers["content-type"]} catch (e) {console.error(e)}// 老一套blob const blob = new Blob([data],{ type: contentType})const link = document.createElement('a')const href = window.URL.createObjectURL(blob) // 创建下载的链接link.href = hreflink.download = fileNamelink.click()document.body.removeChild(link)window.URL.revokeObjectURL(href)}
}

JS

 downloadObject(res, fileName, contentType) {let data = res.datalet headers = res.headerstry {const uri =headers["content-disposition"].split(";")[1].split("filename=")[1];fileName = decodeURIComponent(uri)contentType = headers["content-type"]} catch (e) {console.error(e)}// 老一套blob const blob = new Blob([data],{ type: contentType})const link = document.createElement('a')const href = window.URL.createObjectURL(blob) // 创建下载的链接link.href = hreflink.download = fileNamelink.click()document.body.removeChild(link)window.URL.revokeObjectURL(href)}

调用

	exportExcel({//请求参数}).then(res => {// vue3download.object(res,'','')// vue2this.downloadObject(res)})

最后

需要注意的一共有两个点
第一 后端必须配置
response.setHeader(“Access-Control-Expose-Headers”, “Content-Disposition”);
第二 axios返回拦截器一定要返回完整的response,不能返回经过加工的response.data

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/73802.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HarmonyOS之深入解析如何根据url下载pdf文件并且在本地显示和预览

一、文件下载 ① 网络请求配置 下载在线文件,需要访问网络,因此需要在 config.json 中添加网络权限: {"module": {"requestPermissions": [{"name": "ohos.permission.INTERNET","reason&qu…

鸿蒙前后端项目源码-点餐v3.0-原创!原创!原创!

鸿蒙前后端点餐项目源码含文档ArkTS语言. 原创作品.我半个月写的原创作品,请尊重原创。 原创作品,盗版必究!!!! 原创作品,盗版必究!!!! 原创作…

VUE3+TypeScript项目,使用html2Canvas+jspdf生成PDF并实现--分页--页眉--页尾

使用html2CanvasJsPDF生成pdf,并实现分页添加页眉页尾 1.封装方法htmlToPdfPage.ts /**path: src/utils/htmlToPdfPage.tsname: 导出页面为PDF格式 并添加页眉页尾 **/ /*** 封装思路* 1.将页面根据A4大小分隔边距,避免内容被中间截断* 所有元素层级不要…

5.Excel:从网上获取数据

一 用 Excel 数据选项卡获取数据的方法 连接。 二 要求获取实时数据 每1分钟自动更新数据。 A股市场_同花顺行情中心_同花顺财经网 用上面方法将数据加载进工作表中。 在表格内任意区域右键,刷新。 自动刷新: 三 缺点 Excel 只能爬取网页上表格类型的…

《深度剖析SQL之WHERE子句:数据过滤的艺术》

在当今数据驱动的时代,数据处理和分析能力已成为职场中至关重要的技能。SQL作为一种强大的结构化查询语言,在数据管理和分析领域占据着核心地位。而WHERE子句,作为SQL中用于数据过滤的关键组件,就像是一把精准的手术刀&#xff0c…

华为eNSP-配置静态路由与静态路由备份

一、静态路由介绍 静态路由是指用户或网络管理员手工配置的路由信息。当网络拓扑结构或者链路状态发生改变时,需要网络管理人员手工修改静态路由信息。相比于动态路由协议,静态路由无需频繁地交换各自的路由表,配置简单,比较适合…

Docker 快速入门指南

Docker 快速入门指南 1. Docker 常用指令 Docker 是一个轻量级的容器化平台&#xff0c;可以帮助开发者快速构建、测试和部署应用程序。以下是一些常用的 Docker 命令。 1.1 镜像管理 # 搜索镜像 docker search <image_name># 拉取镜像 docker pull <image_name>…

基础认证-单选题(一)

单选题 1、下列关于request方法和requestlnStream方法说法错误的是(C) A 都支持取消订阅响应事件 B 都支持订阅HTTP响应头事件 C 都支持HttpResponse返回值类型 D 都支持传入URL地址和相关配置项 2、如需修改Text组件文本的透明度可通过以下哪个属性方法进行修改 (C) A dec…

Logback使用和常用配置

Logback 是 Spring Boot 默认集成的日志框架&#xff0c;相比 Log4j&#xff0c;它性能更高、配置更灵活&#xff0c;并且天然支持 Spring Profile 多环境配置。以下是详细配置步骤及常用配置示例。 一、添加依赖&#xff08;非 Spring Boot 项目&#xff09; 若项目未使用 Sp…

MySQL基础语法DDLDML

目录 #1.创建和删除数据库 ​#2.如果有lyt就删除,没有则创建一个新的lyt #3.切换到lyt数据库下 #4.创建数据表并设置列及其属性,name是关键词要用name包围 ​编辑 #5.删除数据表 #5.查看创建的student表 #6.向student表中添加数据,数据要与列名一一对应 #7.查询studen…

在windows下安装windows+Ubuntu16.04双系统(下)

这篇文章的内容主要来源于这篇文章&#xff0c;为正式安装windowsUbuntu16.04双系统部分。在正式安装前&#xff0c;若还没有进行前期准备工作&#xff08;1.分区2.制作启动u盘&#xff09;&#xff0c;见《在windows下安装windowsUbuntu16.04双系统(上)》 二、正式安装Ubuntu …

Ubuntu24.04 离线安装 MySQL8.0.41

一、环境准备 1.1 官方下载MySQL8.0.41 完整包 1.2 上传包 & 解压 上传包名称是&#xff1a;mysql-server_8.0.41-1ubuntu24.04_amd64.deb-bundle.tar # 切换到上传目录 cd /home/MySQL8 # 解压&#xff1a; tar -xvf mysql-server_8.0.41-1ubuntu24.04_amd64.deb-bundl…

记录一次Dell服务器更换内存条报错解决过程No memory found

文章目录 问题问题分析解决流程总结 问题 今天给服务器添加了几个内存条&#xff0c;开启后报错 No memory found No useable DlMMs found. Verify the DlMMsare properly seated and that they are installed in the correct sockets. 问题分析 这个错误说明服务器在启动时没…

Apache HttpClient使用

一、Apache HttpClient 基础版 HttpClients 是 Apache HttpClient 库中的一个工具类&#xff0c;用于创建和管理 HTTP 客户端实例。Apache HttpClient 是一个强大的 Java HTTP 客户端库&#xff0c;用于发送 HTTP 请求并处理 HTTP 响应。HttpClients 提供了多种方法来创建和配…

Maven版本统一管理

多模块的项目&#xff0c;怎么方便管理 模块的版本号呢&#xff1f; 可以使用 ${revision} 配合 flatten-maven-plugin插件 <plugin><groupId>org.codehaus.mojo</groupId><artifactId>flatten-maven-plugin</artifactId><version>1.1.0&…

时序数据库 InfluxDB(一)

时序数据库 InfluxDB&#xff08;一&#xff09; 数据库种类有很多&#xff0c;比如传统的关系型数据库 RDBMS&#xff08; 如 MySQL &#xff09;&#xff0c;NoSQL 数据库&#xff08; 如 MongoDB &#xff09;&#xff0c;Key-Value 类型&#xff08; 如 redis &#xff09…

E5071C数据保存教程:SNP文件/CSV导出+远程传输步骤一键收藏

Keysight E5071C 网络分析仪支持多种数据存储方式&#xff0c;以下是详细的操作步骤和注意事项&#xff1a; 1. 内部存储&#xff08;仪器内存&#xff09; 保存测量数据&#xff1a; 轨迹数据&#xff1a;按 Save/Recall → Save Trace Data → 选择存储格式&#xff08;如 …

业务相关

目录 一、Spark 1.spark主要用来计算什么&#xff1f; 随便说段代码 2.spark 运行命令说一个&#xff0c;平常用哪些参数&#xff0c;怎么考虑的 3.spark shuffle的代码有哪些&#xff0c;平日哪些操作涉及到shuffle了 4.计算中遇到最难解决的是什么&#xff1f; 5.Spark …

LLM之RAG实战(五十二)| 如何使用混合搜索优化RAG 检索

在RAG项目中&#xff0c;大模型生成的参考内容&#xff08;专业术语称为块&#xff09;来自前一步的检索&#xff0c;检索的内容在很大程度上直接决定了生成的效果&#xff0c;因此检索对于RAG项目至关重要&#xff0c;最常用的检索方法是关键字搜索和语义搜索。本文将分别介绍…

[学成在线]07-视频转码

视频转码 视频上传成功后需要对视频进行转码处理。 首先我们要分清文件格式和编码格式&#xff1a; 文件格式&#xff1a;是指.mp4、.avi、.rmvb等这些不同扩展名的视频文件的文件格式 &#xff0c;视频文件的内容主要包括视频和音频&#xff0c;其文件格式是按照一定的编码…