Java解决文件下载后文件名变为___下划线的问题

【SpringBoot】解决Java下载文件时文件名中的中文变成下划线的问题 中文变成下划线的问题 下图左侧是正确名称,右侧是下载之后的名称,中文变成了下划线 解决方式: 将字符编码转换成浏览器可以解析的字符编码 ISO8859-1 ’response.addHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes("utf-8"),"ISO8859-1")); ... 阅读详情

 核心代码:

         //解决文件下载名称变为 ____下划线的BUG
    	 //针对IE或者以IE为内核的浏览器:
    	if (userAgent.contains("MSIE") || userAgent.contains("Trident")) {
             //fileName 文件名
    	     fileName = java.net.URLEncoder.encode(fileName, StandardCharsets.UTF_8.toString());
    	 } else {
    	     //非IE浏览器:
    	     fileName = new String(fileName.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1);
    	}

文件下载代码:

 @RequestMapping("doc/downlod")
    public void downlod(HttpServletResponse response,HttpServletRequest request)throws IOException{

        String pathString = "文件存放路径";
    	String fileName = "文件名";
    	
    	
    	//解决文件下载名称变为 ____下划线的BUG
    	 //针对IE或者以IE为内核的浏览器:
    	if (userAgent.contains("MSIE") || userAgent.contains("Trident")) {
    	     fileName = java.net.URLEncoder.encode(fileName, StandardCharsets.UTF_8.toString());
    	 } else {
    	     //非IE浏览器:
    	     fileName = new String(fileName.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1);
    	}
    	
    	System.out.println(fileName);
        // 读到流中
        InputStream inStream = new FileInputStream(pathString);// 文件的存放路径
        // 设置输出的格式
        response.reset();
        response.setContentType("bin");
        response.addHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
        // 循环取出流中的数据
        byte[] b = new byte[100];
        int len;
        try {
            while ((len = inStream.read(b)) > 0)
                response.getOutputStream().write(b, 0, len);
            inStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

前台:

            //button标签 绑定onclick事件
            function downlod(file){
                var keyword = $("#keyword").val();
                var url = ctxPath + "/doc/downlod";
                window.open(url)
            }

SpringBoot Poi导出word,浏览器下载 文章目录SpringBoot Poi导出word,浏览器下载1.引依赖:2.写代码(生成本地word):3.返回给浏览器下载1.如何返回给浏览器让它下载4.解决方案5.为什么没使用easypoi 模板导出word SpringBoot Poi导出word,浏览器下载 核心问题: 问题就是axios发的请求,浏览器不能直接下载文件 关键点以标红 先看下导出的结果: 非常简单的样式,下面开始介绍如何使用: 我这个例子是,问题+答案的word 1.引依赖: <!--导出word--> <dep 阅读详情

相关推荐

springboot案例:java poi实现导出并下载Excel表格

前段时间公司项目需要实现一个在web端将查询到的数据导出Excel表格并下载的功能,于是,便有了这篇文章,嘻嘻~ **demo环境:idea,java8,springboot,maven** 首先,当然是最基本的导包啦: <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.0....

JBQYMKY的博客 752

【Java文件导出乱码】java导出文件中文名乱码或下划线或百分号解决方法(已解决)附源码

java文件导出,中文名乱码,URLEncoder,java导出中文下划线,java导出中文名乱码,java导出中文名百分号

赏樱看雪撸代码 1万+

[技术解析]4DGS:突破实时动态渲染的4D高斯溅射技术

本文深入解析了4DGS(4D Gaussian Splatting)技术,它通过引入时间维度,将静态的3D高斯溅射升级为动态的4D表示,实现了对复杂动态场景的高质量实时渲染。该技术利用时空联合编码器与高斯形变场网络,结合多分辨率编码与差分溅射渲染,在VR/AR、高帧率游戏等领域展现出突破性的应用潜力,兼顾了渲染速度与画面稳定性。

weixin_29218509的博客 408

JAVA文件导出中文名称出现下划线乱码问题处理:

JAVA文件导出中文名称出现下划线乱码问题处理: ```java fileName = URLEncoder.encode("黄大大的街舞梦.xlsx", "UTF-8"); response.setHeader("Content-disposition","attachment; filename="+ fileName); response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("UTF-8"

qq_40661115的博客 632

BERTopic安装指南:hdbscan依赖问题全解析(附解决方案)

本文详细解析了安装BERTopic时常见的hdbscan依赖报错问题,深入剖析了C++编译环境缺失、Python版本兼容性以及包管理渠道混用三大核心原因。针对Windows、macOS和Linux不同系统,提供了创建虚拟环境、使用conda安装预编译包、安装C++编译工具等具体解决方案,帮助用户顺利安装BERTopic并开始文本主题建模实践。

weixin_29061041的博客 212

YOLOv5 改进点总览:轻量化、高精度的背后有哪些魔改?

YOLOv5是由Ultralytics团队开发的高效目标检测模型,其核心改进包括:主干网络采用CSPDarknet53提升梯度传播效率;特征融合使用PANet增强小目标识别;输出结构采用解耦头设计优化定位和分类任务。此外,YOLOv5通过CIoU损失函数、Mosaic数据增强和SimOTA标签分配机制进一步提升性能。模型支持多种推理格式(ONNX/TensorRT等),并具备自动锚框匹配和多尺度训练功能,使其在轻量化(yolov5s仅7MB)与高性能(最高51.2% mAP)间取得平衡,但缺乏正式论文支撑是

guoguozgw的博客 1804

JavaWeb文件下载文件名称变成下划线的完美解决与分析

文件下载的步骤有三大步骤: 设置响应对象的媒体类型 设置下载窗口 IO流对文件的读写 问题分析: 首先,问题所在是我们下载的文件名称中文变成了下划线,所以我们可以断定和第一步设置响应对象的媒体类型无关。再去看文件的大小是可以读取出来的,所以我们这也可以说明此问题和IO读写文件也无关。两个步骤排除了就剩下设置下载窗口了。答案:问题就是出在设置下载窗口上! 设置下载窗口: 设置下载窗口是通过响应对...

奈何的人生 3753

RabbitMq安装

本文详细介绍了在CentOS7系统上离线部署RabbitMQ4.3.2的完整流程。主要内容包括:1)准备RabbitMQ安装包、Erlang依赖和socat网络工具;2)安装系统编译依赖并编译安装Erlang;3)部署RabbitMQ服务,配置环境变量和socat依赖;4)启用Web管理插件并创建管理员账号;5)配置防火墙放行端口;6)设置Systemd开机自启服务;7)提供常用运维命令。文档特别强调离线部署注意事项,包括socat依赖、版本兼容性、账号安全及主机名配置等问题,为生产环境部署提供完整解决方案

sinat_25821779的博客 321

Java下载文件时文件名中的中文变成下划线,其他正常

问题: 问题源码 package com.lm.cms2.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.Mod...

LI_AINY的博客 1万+

图神经网络实战——总结 | 图神经网络展望

短短数年时间,图神经网络 (Graph Neural Networks, GNN) 已经成为一种重要的深度学习架构,并且已经广泛应用于各个行业。通过本专栏的学习,能够对图学习和 GNN 领域有一个全面的了解,并能为各种应用设计、构建GNN模型。

盼小辉丶的博客 8527

GEE必须会教程——一文教会你研究区域分块计算与合并

一整块算不是挺好的吗?emmmm,用过的人都知道,GEE好比幼年期的“紫妍”,要用“丹药”来养的,除非你是萧炎小友,到哪都有人给爆金币。我们今天想做的是计算2020年夏季西藏自治区的植被覆盖度(FVC),FVC的估算需要使用归一化植被指数(NDVI数据),这里我们用到的产品是MODIS的相关数据产品,该产品的分辨率是25 0m。下载好的结果毕竟是一块一块的,怎么对下载好的结果进行拼接,变成一张大图呢,别急,接下来,我们上科研小霸王——R语言。此处,我们通过省份数据,按照属性筛选,得到西藏自治区的行政边界。

Promising_GEO的博客 2510

SpringBoot 文件下载及文件名中文乱码问题

/** * 下载--测试 */ @GetMapping("download") public void download(HttpServletResponse response) throws SysInnerException { String outFileName = "下载文件名称(中文).txt"; String filePath = "D:\\000\\"; ...

erf_1012的专栏 2万+

Xilinx/AMD公司7系列FPGA的ISERDESE2仿真的”天坑”(附verilog的源码vivado仿真工程)

研究LVDS输出接口的ADC与7系列(ZYNQ)FPGA对接过程中,在Vivado中搭建了ISERDESE2的仿真工程,仿真结果ISERDESE2的并行输出口一直输出X或Z,这个坑之大,耗费了我数天的时间,可以称为“天坑”了。同步复位的要求肯定是高于异步复位的,古话说得好“两害相权取其轻”,所以,跟古话对着干就对了!就当RST是同步复位吧,最后经过反复验证,发现。开始怀疑复位信号是否高电平持续时间不够长?但是没有查到复位时间的要求 : - (

FPGA艺术家的博客 171

springmvc文件下载之文件名下划线问题终极解决方案

直接上代码:Action中代码片段。 @RequestMapping("download") public String download(ModelMap model, @ModelAttribute("e") Template t, HttpServletResponse response, HttpServletRequest request) throws Exception {

lilijunjun888的博客 1412

2026.2.11:ollama api推理GLM-OCR模型识别图片

本文介绍了使用Ollama API调用GLM-OCR模型进行图片文字识别的过程。首先通过ollama pull glm-ocr:latest命令拉取模型,然后使用Python脚本调用API接口。代码示例展示了如何发送包含图片路径的请求,并处理返回的识别结果,支持文本、公式和表格三种识别模式。运行结果展示了模型对输入图片的识别效果,为开发者提供了便捷的OCR解决方案。

拥抱具身智能,昇腾Ascend C 363

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

java 下载文件的文件名乱码_java下载文件名乱码解决方法介绍

java Web开发下载文件功能(代码如下),文件名如果带有中文,经常会出现乱码现象,需要进行编码。(推荐:java视频教程)String fileName = "测试文件.doc";try { HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalC...

weixin_28867991的博客 6252

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Java文件下载-文件名下划线

本来今天高高兴兴,写个 Excel 文件下载,功能实现了,文件名却是 **____.xlsx**、**____.xls**,瞬间裂开...

CalledJoker的博客 2210

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Java下载文件名显示下划线_java下载文件时文件名乱码

Web开发下载文件功能(代码如下),文件名如果带有中文,经常会出现乱码现象,需要进行编码。String fileName = "测试文件.doc";try {HttpServletResponse response =(HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();...

weixin_39638464的博客 630

IE浏览器下载中文文件,文件名乱码或变成下划线问题

在web开发工作当中,浏览器兼容性问题总是会引来一大波前端攻城狮们的疯狂吐槽,尤其是IE浏览器更是一个神一般的存在,总是让人头疼不已。 前段时间用java在做一个文件上传下载功能时,发现部分IE浏览器上下载中文文件名文件时会出现文件名乱码的现象。经过查看之前调用的两个文件下载工具类源代码发现其中一个工具类原来代码是直接使用ISO8859-1编码对文件名进行编码,而另一个工具类则多了一层筛选,通过对浏览器请求头中的User-Agent参数中是否存在MISE关键字对进行了判断,当用户使用浏览器是IE时使用URL

WziH_优快云的博客 2690

从MongoDB中下载文件,文件名显示为下划线

问题 在springboot集成MongoDB数据库,进行文档存储时,下载文件名字出现错误 下载下来是这个名字 代码: //下载 @RequestMapping(value = "/downfile", method = RequestMethod.POST) @ResponseBody public void downfile(@RequestParam(name = "fname",...

WangXiaoYuuuuu 563

java 下载文件名 编码

所以先通过 "中文文件名".getBytes("utf-8") 获取其 byte[] 字节,让其按照字节来编码,即在使用 new String("中文文件名".getBytes("utf-8"), "ISO8859-1") 将其重新组成一个字符串,传送给浏览器。因为ISO8859-1编码的编码表中,根本就没有包含汉字字符,当然也就无法通过"中文文件名".getBytes("ISO8859-1");,Firefox会从空格处截断文件名,需要在编码之前将文件名中的空格替换成下划线之类的可见字符。

qq_30436011的博客 2896

java 文件下载名称下划线问题

前段时间做文件下载功能的时候遇到了一个文件下载后名称是下划线问题,在网上搜了好多,发现基本上说的都一样,说的都是修改response.setHander response.setHeader("Content-disposition", "attachment; filename=" + new String(file.getBytes("utf-8"),"ISO8859-1")); 自己试了一...

xuchangqi的博客 2033

java从linux服务器下载中文名称的文件 出现乱码 下划线

java从linux服务器下载中文名称的文件 出现乱码 下划线 注:不要在swaager进行调试下载 就算设置好了 在swagger返回的文件名 也是乱码。

weixin_57205390的博客 2306

Java文件名包含中文和下划线的文件压缩后文件名百分号

实现Java文件名包含中文和下划线的文件压缩后文件名百分号教程 一、流程图 journey title 教会小白实现Java文件压缩后文件名百分号 section 整体流程 开始 --> 下载Java压缩库 --> 导入压缩库 --> 读取文件 --> 获取文件名 -...

weixin_35282313的博客 131

SpringBoot 项目文件定义下载功能时 HttpServletResponse.setHeader 设置文件名,下载后文件中的汉字变成下划线(_)的问题解决

解决前的代码 String fileName = stringBuilder.toString(); System.out.println("文件名:" + fileName); try { response.reset(); response.setContentType("application/x-zip-compressed;charset=UTF-8"); // 修改前 response.setHeader("Content-Disposition", "attac

一个对Java“一往情深”的后端程序员,对Java生态体系有着浓厚的兴趣与持续的研究。当我不在Java里“内卷”时,我也会探出头来,看看Web技术的广阔天地。希望通过这个博客,与所有同行交流切磋,共同进步。 1860
上一篇: Java字符串中去掉特定的字符串
下一篇: <a/>标签超链接在本页面跳转至外部网页
听风动
博客等级 码龄8年 63粉丝 90原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

听风动

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值