Spring Boot 下载文件(word/excel等)文件名中文乱码问题|构建打包不存在模版文件(templates等)

Spring Boot 下载文件(word/excel等)文件名中文乱码问题|构建打包不存在模版文件(templates等)

准备文件,这里我放在resource下的templates路径

在这里插入图片描述

在pom中配置构建打包的资源,更新maven

在这里插入图片描述

如果使用了assembly打包插件这样配置可能仍不生效,检查并配置 package.xml文件

在这里插入图片描述

编写下载接口,返回要下载的模版文件,fileName可以根据需要灵活配置

    @GetMapping("/download")@ApiOperation(value = "下载导入模版", notes = "")public void download(HttpServletResponse response) throws IOException {String fileName = "数据项集导入模板.xlsx";//获得待下载文件的绝对路径String realPath = ResourceUtils.getURL("classpath:").getPath() + "templates";//获取文件输入流FileInputStream fileInputStream = new FileInputStream(new File(realPath, fileName));//文件名包含中文时需要进行中文编码,否则会出现乱码问题response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "utf-8"));ServletOutputStream servletOutputStream = response.getOutputStream();int len = 0;//设置一个缓冲区,大小取决于文件内容的大小byte[] buffer = new byte[1024];//每次读入缓冲区的数据,直到缓冲区无数据while ((len = fileInputStream.read(buffer)) != -1) {//输出缓冲区的数据servletOutputStream.write(buffer, 0, len);}servletOutputStream.close();fileInputStream.close();}

这样做完后,使用swagger测试接口大概率会出现"%A8%A1%E6%9D%BF.xlsx"这种格式,这是由于Swagger对文件名进行了URL编码,导致文件名在下载时显示为编码后的形式。

直接使用浏览器进行Get测试接口,文件编码正常,完美!

在这里插入图片描述

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

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

相关文章

理财是什么?怎样学习理财?

大家好,我是财富智星,今天跟大家分享一下理财是什么?怎样学习理财的方法。 一、理财的基本原则 1、理财应注重投资而不是投机,要与时间为友。 让我们先考虑以下问题:什么样的回报才算是真正的高回报?假设有…

2023年一级建造师建设工程经济真题

2023年一级建造师建设工程经济真题 1.根据《建设工程工程量清单计价规范》规定,代表专业工程的项目编码是 ()。 A、1,2 B、3,4 C、5,6 D、7,8,9 【答案】B 2.某公司希望所投资项目在第5年末回收1000万…

LoGoNet:基于局部到全局跨模态融合的精确 3D 目标检测

论文地址:https://arxiv.org/abs/2303.03595 论文代码:https://github.com/sankin97/LoGoNet 论文背景 激光雷达传感器点云通常是稀疏的,无法提供足够的上下文来区分远处的区域,从而造成性能次优。 激光雷达-摄像机融合方法在三…

[NLP] LLM---扩充词表LLama2-构建中文tokenization

使用SentencePiece的除了从0开始训练大模型的土豪和大公司外,大部分应该都是使用其为当前开源的大模型扩充词表,比如为LLama扩充通用中文词表(通用中文词表,或者 垂直领域词表)。那这部分工作有没有意义呢?…

实验室电磁铁EM4的技术参数

锦正茂EM4电磁铁可以通过更换电磁铁极头在一定范围内改善磁场的大小和磁场的均匀度 ,并且可以通过调整极头间距改变磁场的大小,该种类型的电磁铁能够很好的与客户设计的磁场平台兼容。主要用于磁滞现象研究、磁化系数测量、霍尔效应研究、磁光实验、磁场…

WebSocket的优缺点

WebSocket的优缺点 1. WebSocket概念 1.1 WebSocket优点 低延迟全双工长期运行双向实时通信 1.2 什么是心跳机制 为了保持WebSocket稳定的长连接,在建立连接后,服务器和客户端之间需要通过心跳包来保持连接状态,以防止连接因长时间没有数据传输而被切断. 心跳包是一直特殊…

学会使用MySQL数据库(1)数据库相关背景了解

目录 什么是数据库 客户端-服务器(Client-Server) 数据库分类 MySQL服务器安装 内存和外存 什么是数据库 存储数据用文件就可以了,为什么还要弄个数据库? 文件保存数据有以下几个缺点: 文件的安全性问题文件不利于数据查询…

Spring框架中的Resource接口是什么,以及它在加载和访问资源时的关键作用

文章目录 什么是 Resource 接口?使用 Resource 加载资源使用 Resource 访问文件系统资源总结 🎈个人主页:程序员 小侯 🎐CSDN新晋作者 🎉欢迎 👍点赞✍评论⭐收藏 ✨收录专栏:Java框架 ✨文章内…

没出息的项目经理的5大表现

大家好,我是老原。 都说,30岁的项目经理凶猛如狼,40岁的项目经理狡猾如狐。 实际上,又有多少项目经理能做到这般。 有多少项目经理,兢兢业业工作个几年,最后还是守着一亩三分地,既没有升职加…

PMP认证可以用来干什么呢?

PMP(项目管理专业人士)认证是一项国际上广为认可的专业认证,具有以下几个重要用途和好处: 1. 提升职业竞争力: PMP认证是项目管理领域具有权威性和声誉的认证之一。持有PMP认证可以证明你具备了相关知识、技能和经验&#xff0c…

【LeetCode75】第五十四题 咒语和药水的成功对数

目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 题目给我们两个数组,要我们找出第一个数组中每个元素能和另一个数组的元素匹配的数量。匹配的条件是乘积大于特定的值。 那么…

[SSM]MyBatisPlus拓展

五、拓展篇 5.1逻辑删除 在电商网站中,我们会上架很多商品,这些商品下架以后,我们如果将这些商品从数据库中删除,那么在年底统计商品的时候,这个商品要统计的,所以这个商品信息我们是不能删除的。 如果商城…

LC1798. 你能构造出连续值的最大数目(JAVA)

LC1798. 你能构造出连续值的最大数目 题目描述贪心算法代码演示 题目描述 难度 - 中等 Leetcode - 1798. 你能构造出连续值的最大数目 给你一个长度为 n 的整数数组 coins ,它代表你拥有的 n 个硬币。第 i 个硬币的值为 coins[i] 。如果你从这些硬币中选出一部分硬币…

佛山融资融券(两融)开户利率最低能做到多少?5%!

佛山融资融券(两融)开户利率最低能做到多少?5%! 具体佛山融资融券(两融)开户利率最低能做到多少,需要根据不同的券商政策而定。不同的券商可能具有不同的优惠政策和开户条件,因此开户前应该仔细了解券商的政策和条件。 融资融券是投资者通过证券公司向…

STL stack 和 queue

文章目录 一、stack 类和 queue 类的模拟实现 stack 只允许在一端进行插入删除,是一个后进先出(LIFO)的结构,可以存储任意类型 queue 只允许在一端进行插入,另一端进行删除,是一个先进先出(FIFO)的结构,可以存储任意类…

2023年墨西哥 SP/BMV IPC 研究报告

第一章 指数概况 1.1 指数基本情况 墨西哥 S&P/BMV IPC 指数衡量在墨西哥证券交易所 (Bolsa Mexicana de Valores, BMV)上市,规模最大、流动性最高的股票表现。提供一个覆盖墨西哥股市的广泛、具有代表性且可轻易复制的指数。根据多元化要求,按市值…

SQL12 高级操作符练习(2)

描述 题目:现在运营想要找到学校为北大或GPA在3.7以上(不包括3.7)的用户进行调研,请你取出相关数据(使用OR实现) 示例:user_profile iddevice_idgenderageuniversitygpa12138male21北京大学3.423214male复旦大学4.03…

【c++每天一题】 字符串压缩

字符串压缩 时间限制:C/C 1000MS,其他语言 2000MS 内存限制:C/C 128MB,其他语言 256MB 难度:简单 分数:100 OI排行榜得分:12(0.1*分数2*难度) 描述 给定一个字符串,将连续相同的字符…

Docker实战:docker compose 搭建Rocketmq

1、配置文件准备 1.1、 新建目录:/home/docker/data/rocketmq/conf mkdir /home/docker/data/rocketmq/conf1.2、 在上面目录下新建文件broker.conf文件,内容如下 brokerClusterName DefaultCluster brokerName broker-a brokerId 0 deleteWhen 0…

LeetCode刷题笔记【31】:动态规划专题-3(整数拆分、不同的二叉搜索树)

文章目录 前置知识343. 整数拆分题目描述解题思路代码进一步优化 96.不同的二叉搜索树题目描述解题思路代码优化改进 总结 前置知识 参考前文 参考文章: LeetCode刷题笔记【29】:动态规划专题-1(斐波那契数、爬楼梯、使用最小花费爬楼梯&…