文件下载中文文件名不显示
2015-11-17 17:49
218 查看
使用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); // 其他代码略
相关文章推荐
- 微信默认表情符号的代码对照表
- 解决OS X 10.11 升级 cocoapods带来的问题
- hdu 3183 A Magic Lamp (RMQ)
- 淘宝架构框架
- Android手机出现"已安装了存在签名冲突的同名数据包"的原因及解决办法
- request.getParameter和request.getAttribute之间的区别
- Struts2
- 快速理解Kafka分布式消息队列框架
- 利用 Postfix 抵擋垃圾信
- NOIP2015总结
- HDU 5500 Reorder the Books【水题】
- 简单密码明文和16,32MD5密码对应
- selenium中配置FirefoxProfile控制文件下载路径、SSL和Proxy
- promise
- JMS消息的确认方式
- linux 查看用户上次修改密码的日期
- 实用代码片段
- elastix登录不了的问题
- A20 实现 红外 开关机
- tomcat 内存溢出问题