文件下载中文文件名不显示

原创 2015年11月17日 17:49:35

使用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);
// 其他代码略
版权声明:本文为博主原创文章,未经博主允许不得转载。

java文件下载的文件名乱码问题的解决

在Java的web开发中,文件下载功能的文件名文件名乱码问题是经常遇到的。 对于这个问题,不同的浏览器,解决的方法不太一样。 IE的话,通过URLEncoder对filename进行UTF8编码。...

java上传下载文件,中文文件名不显示或乱码

java上传下载文件,中文文件名不显示或乱码

java 文件下载 文件名称中文不显示

String fileName = “文件名称.doc” try { String fileName = new String(downFileName.getBytes(), “...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

文件下载(解决中文文件名下载乱码问题) 收集

 在前面一篇文章里(浅谈 COMMON-FILEUPLOAD1.1 的使用 )我介绍了用JSP上传文件的方法,提到上传与之对应的便是下载,可能很多网友会说下载直接做个超连接不就可以了,当然对于一般的文...
  • elifefly
  • elifefly
  • 2010年01月24日 22:38
  • 19114

IE浏览器下载文件中文文件名乱码问题解决

在web开发工作当中,浏览器兼容性问题总是会引来一大波前端攻城狮们的疯狂吐槽,尤其是IE浏览器更是一个神一般的存在,总是让人头疼不已。 前段时间用java在做一个文件上传下载功能时,发现部分I...

在IE下-下载文件-文件名中文名乱码问题

首先说明下各浏览器对文件下载的文件名解析编码如下: 1.  IE浏览器,采用URLEncoder编码  2.  Opera浏览器,采用filename*方式  3.  Safari浏览器,采用I...

处理下载文件时中文乱码

/** * 下载文件时,针对不同浏览器,进行附件名的编码 * @param filename 下载文件名 * @param agent 客户端浏览器(通过request.getHeader("u...

HTTP 文件下载时中文文件名乱码问题处理

之前有做文件下载处理,但由于文件名一直是英文的,所以并未发现有该问题,直到最近项目中有中文名出现.   以前的代码设置: header['Content-Disposition'] = 'attach...
  • cwallow
  • cwallow
  • 2015年09月10日 14:10
  • 2087

Java Web开发下载文件,文件名中文乱码解决方案

​Web开发下载文件功能(代码如下),文件名如果带有中文,经常会出现乱码现象,需要进行编码。 String fileName = "测试文件.doc"; try { HttpServ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:文件下载中文文件名不显示
举报原因:
原因补充:

(最多只允许输入30个字)