使用response.setHeader("Content-Disposition","attachment;filename="+fName)下载文件,中文文件名无法显示的问题

今天遇到这么一个情况,在Controller代码中进行文件下载:

  其中file_name是中文,然后通过如下代码下载

response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition","attachment;filename="+file_name);
OutputStream outputStream = response.getOutputStream();
InputStream inputStream = new FileInputStream(file_uri());
byte[] buffer = new byte[1024];
int i = -1;
while ((i = inputStream.read(buffer)) != -1) {outputStream.write(buffer, 0, i);
}
outputStream.flush();
outputStream.close();
inputStream.close();

假设file_name的内容是:“工程文档.docx”

那么下载的结果就是一个名为“docx”的文件(文件名+后缀名),显然,文件名中的中文字符丢失了

上网查了资料,大体的原因就是header中只支持ASCII,所以我们传输的文件名必须是ASCII,当文件名为中文时,必须要将该中文转换成ASCII。

解决办法如下:

response.setContentType("application/octet-stream");
file_name = new String(file_name.getBytes(), "ISO-8859-1");
//或是file_name = URLEncoder.encode(file_name,"UTF-8");
response.setHeader("Content-Disposition","attachment;filename="+file_name);
// 其他代码略

文件下载中文文件名不显示相关推荐

  1. 文件下载中文文件名无法显示问题

    在工作中将生成好的pdf字节流写回前端响应下载时文件名显示有问题. 在将返回前端下载的文件名修改为中文后,下载的文件名字未显示 如: 原下载名:"download.pdf" 修改后 ...

  2. 文件下载中文文件名乱码问题解决

    1.首先后台接收后,多文件名进行再编码 filePath = new String(filePath.getBytes(),"utf-8");//有没有这句话 2.注意设置浏览器, ...

  3. windows查看linux文件中文,Linux 系统下无法查看Windows 中创建的中文文件名

    标  题: Linux 系统下无法查看Windows 中创建的中文文件名 我是Linux初学者,在网上搜索了很久,经过多次尝试仍然无法解决问题,只好在这里发贴请教了,还望各位高手指点一下. 问题描述: ...

  4. 案例:文件下载需求:1. 页面显示超链接 2. 点击超链接后弹出下载提示框 3. 完成图片文件下载||中文文件问题

    文件下载需求:     1. 页面显示超链接     2. 点击超链接后弹出下载提示框     3. 完成图片文件下载 * 分析:     1. 超链接指向的资源如果能够被浏览器解析,则在浏览器中展示 ...

  5. php实现中文文件名文件下载,php实现中文文件名文件下载

    有很多朋友php下载文件时都是把中文名转换在英文或全数字的然后再进行下载,下面我来介绍直接利用中文文件名文件下载并且不出现乱码的解决办法,代码如下: $filename = "中文 文件名. ...

  6. 解决FlashFXP5 不能下载中文文件名文件的问题(显示文件名中文正常下载文件名是乱码)

    服务器(Windows)配置了Serv-U_14,使用FlashFXP5.0客户端能正常连接ftp服务器,列表没有问题,文件名显示也正常.上传.下载英文文件名的文件没有问题,部分中文文件名的文件下载出 ...

  7. eclipse中文乱码解决_解决git status显示中文文件名乱码问题

    使用 git status 查看本地有改动但未提交的中文文件名时,发现会显示为一串数字,没有显示中文的文件名.具体如下所示: $ git status# 位于分支 master# 尚未暂存以备提交的变 ...

  8. 解决文件下载在火狐浏览器出现中文文件名乱码的方法

    解决文件下载在火狐浏览器出现中文文件名乱码的方法 参考文章: (1)解决文件下载在火狐浏览器出现中文文件名乱码的方法 (2)https://www.cnblogs.com/zeng1994/p/739 ...

  9. 文件下载(解决中文文件名下载乱码问题)(二)

    针对"文件下载(解决中文文件名下载乱码问题)"出现的问题:在弹出的文件下载框选择"打开"不能正常打开文件. 下面的代码可解决此问题: java 代码 <% ...

最新文章

  1. (二十一)unity4.6学习Ugui中文文档-------交互-Supported Events amp; Raycasters
  2. 【AI-1000问】为什么CNN中的卷积核半径都是奇数?
  3. openstack swift memcached
  4. ZooKeeper的安装与部署
  5. silverlightLogo动画
  6. 为什么中小企业选择 SAP Business One?
  7. SwiftUI AsyncImage cancelled 无法加载图片
  8. 电脑word在哪_焦作市周边商务电脑办公入门培训
  9. 【知乎问答】有哪些特殊的搜索引擎?
  10. 轻量级git服务gogs平台
  11. android时间格式am pm,pm时间(am.pm正确时间书写格式)
  12. 我是屌丝——彪悍的人生不需要代言
  13. centos7.9安装zabbix+添加局域网下其他客户机
  14. Unity3d实现开机自启App
  15. 破晓传说Boss切屏效果小记
  16. hbase倒序查询_Hbase 查询Scan速度优化
  17. Inno setup 常用修改技巧
  18. delphi如何将字符串复制到剪贴板上
  19. BoundsChecker简易使用教程
  20. Banner小组年会总结

热门文章

  1. 在2008R2虚拟机上搭建域环境
  2. 快手服务商(直播基地)怎么申请?需要哪些条件呢?
  3. 让罕见被看见 | “罕罕漫游”公益品牌发布会在上海成功举办
  4. win10的快捷键GPU
  5. PCB板层叠结构介绍
  6. vue引入阿里巴巴iconfont图标(简单易懂)
  7. 遥感、GIS和GPS技术在各领域中的应用
  8. APS中生产计划排程基本原理以及具体步骤介绍
  9. 员工满意度调查表第三部分,对员工培训的调查表20题
  10. 【程序设计训练】点球大战