博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
文件下载中文文件名乱码
阅读量:6474 次
发布时间:2019-06-23

本文共 1574 字,大约阅读时间需要 5 分钟。

hot3.png

文件下载中文文件名乱码和FireFox名中空格被截断问题。

解决方法一:

//只能字符被截断问题,但是中文会出现乱码,可能需要对其字符进行编码(这没有测试)response.addHeader("Content-Disposition", "attachment; filename=\"" + fileShowName+\"");

 

解决方法二:在Edge、Opera、IE、FireFox、Google等主流浏览器下都测试过。

 

private void downloadFile(InputStream in ,HttpServletRequest request, HttpServletResponse response ) throws IOException {        String fileShowName ;        String agent = request.getHeader("USER-AGENT");        System.out.println(" 浏览器agent信息 ---》" +agent);        //IE内核浏览器,或者Edge浏览器        if( null != agent && (-1 != agent.indexOf("MSIE") || -1 != agent.indexOf("Edge"))){            fileShowName = URLEncoder.encode(this.fileShowName, "utf-8");            //处理IE文件名空格变成"+"的问题            fileShowName = fileShowName.replace("+", "%20");        }else{
//非IE fileShowName = URLDecoder.decode(this.fileShowName, "utf-8"); //解决火狐,文件名中空格被截断的情况 fileShowName = "=?UTF-8?B?" + (new String (Base64.encodeBase64(this.fileShowName.getBytes("UTF-8")))) + "?="; } response.addHeader("Content-Disposition", "attachment; filename=" + fileShowName); response.setContentType("application/octet-stream"); response.setHeader("Content-Length", fileSize + ""); OutputStream out = response.getOutputStream(); byte[] buffer = new byte[ bufferSize ]; int len; while ((len = in.read(buffer, 0, buffer.length)) != -1) { out.write(buffer, 0, len); } out.flush(); out.close(); in.close(); }

转载于:https://my.oschina.net/u/1024333/blog/538918

你可能感兴趣的文章
基本分类方法——KNN(K近邻)算法
查看>>
.NET Framework3.0/3.5/4.0/4.5新增功能摘要
查看>>
熟悉常用的Linux操作
查看>>
面象过程与面象对象
查看>>
谷歌设置支持webgl
查看>>
js的AJAX请求有关知识总结
查看>>
Eclipse添加新server时无法选择Tomcat7的问题
查看>>
nginx 配置https 负载均衡
查看>>
双拓扑排序 HDOJ 5098 Smart Software Installer
查看>>
三分 POJ 2420 A Star not a Tree?
查看>>
存储过程报错行提示
查看>>
Leetcode 4 - median-of-two-sorted-arrays
查看>>
修改OBS为仅直播音频
查看>>
OCA读书笔记(3) - 使用DBCA创建Oracle数据库
查看>>
Python基础进阶之路(一)之运算符和输入输出
查看>>
阻塞非阻塞异步同步 io的关系
查看>>
ClickStat业务
查看>>
DMA32映射问题
查看>>
POJ 1269 Intersecting Lines(判断两直线位置关系)
查看>>
spring3.0.7中各个jar包的作用总结
查看>>