java处理文件下载含特殊符号_java 文件下载名称包含特殊字符处理

本文介绍了如何处理Java文件下载时遇到的特殊字符问题,特别是针对IE、谷歌和火狐浏览器的解决方案。通过URLEncoder编码和特殊字符替换,确保文件名能正确下载。
部署运行你感兴趣的模型镜像

经过我测试除了文件名称包含英文逗号谷歌会下载失败外,其它的都没问题了。这个找到解决方法了再补上,先记录一下

String userAgent = request.getHeader("user-agent").toLowerCase();

if (userAgent.contains("msie")) {// IE

try {

fileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("%20", "\\+").replaceAll("%28", "\\(")

.replaceAll("%29", "\\)").replaceAll("%3B", ";").replaceAll("%40", "@").replaceAll("%23", "\\#")

.replaceAll("%26", "\\&").replaceAll("%2C", "\\,").replaceAll("%24", "\\$")

.replaceAll("%25", "\\%").replaceAll("%5E", "\\^").replaceAll("%3D", "\\=")

.replaceAll("%2B", "\\+");

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

response.setHeader("Content-Disposition", "attachment; filename=" + fileName);

} else if (userAgent.contains("like gecko")) {// 谷歌

try {

fileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("%20", "\\+").replaceAll("%28", "\\(")

.replaceAll("%29", "\\)").replaceAll("%3B", ";").replaceAll("%40", "@").replaceAll("%23", "\\#")

.replaceAll("%26", "\\&").replaceAll("%2C", "\\,").replaceAll("%24", "\\$")

.replaceAll("%25", "\\%").replaceAll("%5E", "\\^").replaceAll("%3D", "\\=")

.replaceAll("%2B", "\\+").replaceAll("%5B", "\\[").replaceAll("%5D", "\\]")

.replaceAll("%7B", "\\{").replaceAll("%7D", "\\}");

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

response.setHeader("Content-Disposition", "attachment; filename=" + fileName);

} else if (userAgent.contains("firefox")) {// 火狐

try {

fileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1").replaceAll("%20", "\\+")

.replaceAll("%28", "\\(").replaceAll("%29", "\\)").replaceAll("%3B", ";").replaceAll("%40", "@")

.replaceAll("%23", "\\#").replaceAll("%26", "\\&").replaceAll("%2C", "\\,")

.replaceAll("%24", "\\$");

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

response.setHeader("Content-Disposition", "attachment;filename=\"" + fileName + "\"");

}

您可能感兴趣的与本文相关的镜像

GPT-SoVITS

GPT-SoVITS

AI应用

GPT-SoVITS 是一个开源的文本到语音(TTS)和语音转换模型,它结合了 GPT 的生成能力和 SoVITS 的语音转换技术。该项目以其强大的声音克隆能力而闻名,仅需少量语音样本(如5秒)即可实现高质量的即时语音合成,也可通过更长的音频(如1分钟)进行微调以获得更逼真的效果

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值