当前位置: 首页 > news >正文

下载文件时的文件名中文乱码问题,文件名丢失

涉及到的java代码如下,下载的时候文件名为中文

package com.example.springboot.service.impl;import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.springboot.base.Pager;
import com.example.springboot.dto.SongInsertDTO;
import com.example.springboot.dto.SongPagerDTO;
import com.example.springboot.dto.SongUpdateDTO;
import com.example.springboot.entity.Song;
import com.example.springboot.mapper.SongMapper;
import com.example.springboot.restful.JsonResult;
import com.example.springboot.service.SongService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;/*** @author heyunlin* @version 1.0*/
@Service
public class SongServiceImpl implements SongService {private final SongMapper songMapper;@Autowiredpublic SongServiceImpl(SongMapper songMapper) {this.songMapper = songMapper;}@Overridepublic void insert(SongInsertDTO insertDTO) {Song song = new Song();song.setId(uuid());song.setName(insertDTO.getName());song.setSinger(insertDTO.getSinger());if (StringUtils.isNotEmpty(insertDTO.getNote())) {song.setNote(insertDTO.getNote());}songMapper.insert(song);}@Overridepublic void deleteById(String id) {songMapper.deleteById(id);}@Overridepublic void updateById(SongUpdateDTO updateDTO) {Song song = new Song();song.setId(updateDTO.getId());song.setName(updateDTO.getName());song.setSinger(updateDTO.getSinger());if (StringUtils.isNotEmpty(updateDTO.getNote())) {song.setNote(updateDTO.getNote());}song.setLastUpdateTime(LocalDateTime.now());songMapper.updateById(song);}@Overridepublic Song selectById(String id) {return songMapper.selectById(id);}@Overridepublic List<Song> selectList() {return songMapper.selectList(null);}@Overridepublic Page<Song> selectByPage(SongPagerDTO songPagerDTO) {QueryWrapper<Song> wrapper = Pager.getQueryWrapper(songPagerDTO, true);Page<Song> page = Pager.ofPage(songPagerDTO);return songMapper.selectPage(page, wrapper);}@Overridepublic void export(HttpServletResponse response) {String fileName = "歌曲列表.xlsx";response.setCharacterEncoding("utf-8");response.setHeader("Content-disposition", "attachment;filename=" + fileName);response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");try {List<Song> songs = songMapper.selectList(null);EasyExcel.write(response.getOutputStream(), Song.class).sheet("歌曲列表").doWrite(songs);} catch (Exception e) {e.printStackTrace();response.reset();response.setContentType("application/json;charset=utf-8");JsonResult<Void> jsonResult = JsonResult.success("数据导出异常");try {response.getWriter().write(jsonResult.toString());} catch (IOException ioException) {ioException.printStackTrace();}}}/*** 根据当前时间生成UUID* @return String*/private static String uuid() {DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");LocalDateTime localDate = LocalDateTime.now();return localDate.format(formatter);}}

 

然后下载很快,但是文件名没有了

 

文件的内容也是正常的

 

后台也没报错

 

一般这种情况下可能会无从下手,F12打开控制台看一下,发现后端设置的响应头Content-disposition的文件名乱码了!

 

最终解决方案:使用utf-8格式对文件名进行编码

String fileName = URLEncoder.encode("歌曲列表.xlsx", "utf-8");

相关文章:

下载文件时的文件名中文乱码问题,文件名丢失

涉及到的java代码如下&#xff0c;下载的时候文件名为中文 package com.example.springboot.service.impl;import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.StringU…...

ios swift sqlite3 简单使用

一.创建Person类 import UIKitclass Person: NSObject {var name:String? nilvar sex:String? nilvar age:String? niloverride func setValue(_ value: Any?, forUndefinedKey key: String) {}} 二.在使用的地方导入sqlite.3头文件&#xff0c;例如方法都在viewcontr…...

长古诗(一)

春江花月夜 【作者】张若虚 【朝代】 春江潮水连海平&#xff0c;海上明月共潮生。 滟滟随波千万里&#xff0c;何处春江无月明&#xff01; 江流宛转绕芳甸&#xff0c;月照花林皆似霰&#xff1b; 空里流霜不觉飞&#xff0c;汀上白沙看不见。 江天一色无纤尘&#x…...

VC++ 预编译头学习

头文件的作用,就是把自己的 所有内容直接“粘贴”到相应的 #include 语句处。 编译器在编译你的程序的时候,所做 的第一件事,也就是展开所有的 #include 语句和 #define 语句。 头文件的出现,给书写程序带来了很大方便。 到了 Windows 时代后,慢慢 就呈现出一些问题。 几…...

JVM内存模型:理解Java程序的内存管理

JVM内存模型&#xff1a;理解Java程序的内存管理 在Java编程中&#xff0c;JVM&#xff08;Java虚拟机&#xff09;是程序的运行环境&#xff0c;它负责管理程序的内存。JVM内存模型是Java语言规范中定义的一套规则&#xff0c;用于描述在JVM中程序如何通过内存来交互和操作。…...

golang opt-in transparent telemetry

目录 1. golang opt-in transparent telemetry1.1. Getting started1.2. Learning Go1.3. Troubleshooting 1. golang opt-in transparent telemetry Recent gopls release (v0.14) includes opt-in transparent telemetry. Telemetry uploading is off by default even when…...

数据资产“入表”是不是红利?国企怎么认识?怎么利用?

毫无疑问&#xff0c;数字资产入表是红利。 数据资产入表意味着将数据资源作为企业资产进行确认和计量&#xff0c;解决了数据资源作为非物质资产未被充分认可和有效计量的问题&#xff0c;意味着数据完成了从自然资源到经济资产的跨越。上海数据交易所总经理汤奇峰此前表示&a…...

薪资面谈小技巧

从求职者的角度上来说&#xff0c;要求高工资是很正常的&#xff0c;这本身就无可厚非&#xff0c;毕竟金钱是人们衡量一份工作价值的首要因素。但是&#xff0c;我们经常看到这样一种现象&#xff0c;那就是求职者漫天要价。当很想雇佣这个求职者但是其所提薪资无法满足时&…...

基于Java的鲜花商店的设计与实现,ssm+jsp,MySQL数据库,前台用户+后台管理,完美运行,有一万字论文

目录 演示视频 基本介绍 选题背景 系统结构 论文目录 系统截图 演示视频 基本介绍 基于Java的鲜花商店的设计与实现&#xff0c;ssmjsp&#xff0c;MySQL数据库&#xff0c;前台用户后台管理&#xff0c;完美运行&#xff0c;有一万字论文。 前台功能&#xff1a;注册登…...

vue3 父组件调用子组件的方法

在Vue 3中&#xff0c;要使父组件调用子组件的方法&#xff0c;可以通过以下步骤实现&#xff1a; 在子组件中定义一个方法&#xff0c;可以在methods对象中定义该方法。例如&#xff1a; <script> export default { methods: { myMethod() { // 方法逻辑 } } …...

和鲸科技创始人范向伟受邀出席“凌云出海,来中东吧”2023华为云上海路演活动

11月9日&#xff0c;华为云“凌云出海&#xff0c;来中东吧”系列路演活动第二场在上海正式开启。聚焦“创业全球化”&#xff0c;本次活动由华为云携手阿布扎比投资办公室&#xff08;ADIO&#xff09;举办&#xff0c;旨在与渴望出海发展的优秀创业者们共探出海中东新商机。 …...

短路语法 [SUCTF 2019]EasySQL1

打开题目 输入字符的时候啥也不回显。只有输入数字的时候页面有回显 但是当我们输入union&#xff0c;from&#xff0c;sleep&#xff0c;where&#xff0c;order等&#xff0c;页面回显nonono&#xff0c;很明显过滤了这些关键词 最开始我的思路是打算尝试双写绕过 1;ununion…...

鉴源实验室 | DoIP协议网络安全攻击

作者 | 付东杰 上海控安可信软件创新研究院工控网络安全组 来源 | 鉴源实验室 社群 | 添加微信号“TICPShanghai”加入“上海控安51fusa安全社区” 01 背 景 随着科技的迅猛发展&#xff0c;汽车行业正经历着前所未有的数字化变革。现代汽车中使用70多个电子控制单元&#x…...

腾讯云服务器新用户购买优惠多少钱?腾讯云新用户购买优惠

对于新用户来说&#xff0c;腾讯云服务器更是提供了一系列的优惠活动&#xff0c;让你在购买时享受到更多的优惠。那么&#xff0c;腾讯云服务器新用户购买优惠多少钱呢&#xff1f;接下来&#xff0c;让我们一起来了解一下。 腾讯云双十一领9999代金券 https://1111.mian100.…...

超全整理,Pytest自动化测试框架-多进程(pytest-xdist)运行总结...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 平常我们功能测试…...

jbase实现通用码表

没有通用码表的体系是不完美的&#xff0c;当年我用C#能实现的通用码表&#xff0c;现在在java一样的实现了&#xff0c;通用码表对提高开发效率和降低开发成本的作用巨大&#xff0c;开发可以专注写业务&#xff0c;而不必被太多的维护界面束缚。进而体现在产品竞争力上面&…...

工业镜头中的远心镜头与普通镜头的光路

普通镜头&#xff1a; 主光线与镜头光轴有角度&#xff0c;工件上下移动时&#xff0c;像的大小有变化。 FOV&#xff1e;镜头前端直径。 物方远心镜头&#xff1a; 物方主光线平行于光轴&#xff0c;物距发生改变时&#xff0c;像高不会发生改变&#xff0c;测得的物体尺寸大…...

【Qt之QWizardPage】使用

介绍 QWizardPage类是向导页面的基类。 QWizard表示一个向导。每个页面都是一个QWizardPage。当创建自己的向导时&#xff0c;可以直接使用QWizardPage&#xff0c;也可以子类化它以获得更多控制。 页面具有以下属性&#xff0c;由QWizard呈现&#xff1a;a title&#xff0c;…...

自动化测试,5个技巧轻松搞定

想要在质量保证团队中赢得核心&#xff1f;当你组建你的网络应用时要记住这些技巧&#xff0c;可以变得更容易分析并快速创建更多准确可重复的自动化测试。 1.歧义是敌人 尽可能使你的代码具体化。当然&#xff0c;你已经遵循了W3C标准&#xff0c;对吗&#xff1f;以下有三件…...

EasyWeChat调用企业微信接口获取客户群数据

use EasyWeChat\Factory; use fast\Http;$config [corp_id > Config::get(site.corp_id),agent_id > Config::get(site.agend_id), // 如果有 agend_id 则填写secret > Config::get(site.agent_secret),// 指定 API 调用返回结果的类型&#xff1a;array(default)…...

Windows11状态栏图标失效?手把手教你修复注册表关联(附一键脚本)

Windows 11状态栏图标失效的终极修复指南&#xff1a;从原理到实战 Windows 11以其现代化的界面设计吸引了不少用户&#xff0c;但系统自定义过程中难免会遇到各种"小脾气"。最近不少用户反馈&#xff0c;在尝试去除桌面图标小箭头后&#xff0c;状态栏的应用程序图标…...

零基础教程:5个简单步骤用Mi-Create打造个性化小米手表表盘

零基础教程&#xff1a;5个简单步骤用Mi-Create打造个性化小米手表表盘 【免费下载链接】Mi-Create Unofficial watchface creator for Xiaomi wearables ~2021 and above 项目地址: https://gitcode.com/gh_mirrors/mi/Mi-Create Mi-Create是一款专为小米穿戴设备用户打…...

数学动画音频同步:让几何图形随音乐起舞的技术实现

数学动画音频同步&#xff1a;让几何图形随音乐起舞的技术实现 【免费下载链接】manim A community-maintained Python framework for creating mathematical animations. 项目地址: https://gitcode.com/GitHub_Trending/man/manim 在数学可视化领域&#xff0c;Manim…...

MyBatis-Plus 大表分页 count () 性能瓶颈深度解析

在使用MyBatis-Plus进行大表分页查询时&#xff0c;你是否通过日志发现&#xff0c;分页插件总会先执行一条count()语句&#xff0c;且这条count()在千万级数据下耗时极长&#xff0c;严重拖慢整体响应&#xff1f;本文将从源码层面剖析MyBatis-Plus分页count()的执行机制&…...

Virtual-Display-Driver:Windows虚拟显示器的全能解决方案深度解析

Virtual-Display-Driver&#xff1a;Windows虚拟显示器的全能解决方案深度解析 【免费下载链接】Virtual-Display-Driver Add virtual monitors to your windows 10/11 device! Works with VR, OBS, Sunshine, and/or any desktop sharing software. 项目地址: https://gitco…...

PDFMathTranslate:3步搞定学术论文AI翻译,完美保留公式排版的终极解决方案

PDFMathTranslate&#xff1a;3步搞定学术论文AI翻译&#xff0c;完美保留公式排版的终极解决方案 【免费下载链接】PDFMathTranslate PDF scientific paper translation with preserved formats - 基于 AI 完整保留排版的 PDF 文档全文双语翻译&#xff0c;支持 Google/DeepL/…...

Java开发者指南:CV_UNet图像着色模型集成实战

Java开发者指南&#xff1a;CV_UNet图像着色模型集成实战 1. 引言 作为一名Java开发者&#xff0c;你可能经常遇到需要处理图像着色的场景。比如老照片修复、黑白影像上色&#xff0c;或者给设计稿添加色彩。传统方法要么效果一般&#xff0c;要么需要深厚的技术背景。现在有…...

数据安全与性能瓶颈困扰企业?湖南天硕SSD固态硬盘带来航天级稳定体验

在数字化转型加速的今天&#xff0c;企业数据量呈指数级增长&#xff0c;随之而来的数据安全风险与存储性能瓶颈已成为众多企业&#xff0c;尤其是对数据可靠性要求极高的B端用户&#xff08;如企业采购负责人、技术总监&#xff09;面临的共同挑战。传统存储方案在应对复杂业务…...

RWKV7-1.5B-G1A多模态应用初探:从文本到简单图表描述生成

RWKV7-1.5B-G1A多模态应用初探&#xff1a;从文本到简单图表描述生成 1. 开篇&#xff1a;当语言模型遇见数据可视化 最近在测试RWKV7-1.5B-G1A模型时&#xff0c;我发现一个有趣的现象——这个原本设计用于文本处理的模型&#xff0c;居然能通过巧妙的Prompt设计&#xff0c…...

科大奥锐虚拟仿真实验避坑指南:从85分到95分,我的密度测量实验复盘与代码优化

科大奥锐虚拟仿真实验提分实战&#xff1a;从85分到95分的密度测量实验深度优化 第一次接触科大奥锐的密度测量虚拟仿真实验时&#xff0c;我和大多数同学一样&#xff0c;以为按照指导手册操作就能轻松拿高分。直到连续三次实验分数卡在85-87分之间&#xff0c;才意识到这个看…...