文件下载,文件名有中文及空格无法显示问题
2017-06-05 13:04
721 查看
使用response.setHeader(“Content-Disposition”,”attachment;filename=”+fName)下载文件,
中文文件名无法显示的问题及空格处理
代码如下:
中文文件名无法显示的问题及空格处理
**该问题解决重点在于这两块代码** //处理文件名有中文问题 if (request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0) { file_name= URLEncoder.encode(fileName,"UTF-8"); } else { file_name= new String(fileName.getBytes(),"ISO-8859-1"); } //最后加双引号处理名称中间有空格问题 response.setHeader("Content-Disposition","attachment;filename=\""+file_name+"\"");
代码如下:
import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.net.URLEncoder; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; /** * @author ZhouMengShun */ @Controller @RequestMapping("/demo") public class DemoController { @RequestMapping(value = "download", method = RequestMethod.GET) public void downloadFile(HttpServletRequest request,HttpServletResponse response) { InputStream in = null; try { String fileName="测试文件.rar";//文件名称 File file = new File("c://"+fileName);//创建文件对象,假设该文件已存在,这里不做判断 // 1.设置文件ContentType类型,这样设置,会自动判断下载文件类型 response.setContentType("application/x-msdownload"); //response.setContentType("multipart/form-data");//也可以这样写 String file_name=null; //处理文件名有中文问题 if (request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0) { file_name= URLEncoder.encode(fileName,"UTF-8"); } else { file_name= new String(fileName.getBytes(),"ISO-8859-1"); } //最后加双引号处理名称中间有空格问题 response.setHeader("Content-Disposition","attachment;filename=\""+file_name+"\""); in = new FileInputStream(file); // 3.通过response获取ServletOutputStream对象(out) int b = 0; byte[] buffer = new byte[512]; while (b != -1) { b = in.read(buffer); if (b != -1) { response.getOutputStream().write(buffer, 0, b);// 4.写到输出流(out)中 } } } catch (Exception e) { } finally { try { if (in != null) { in.close(); } response.getOutputStream().flush(); } catch (Exception ex) { } } } }
相关文章推荐
- 使用response.setHeader("Content-Disposition","attachment;filename="+fName)下载文件,中文文件名无法显示的问题
- 整理java文件下载(中文乱码、火狐浏览器乱码、空格变+号、文件名包含空格时文件名可能显示不全等问题)
- struts2 文件下载文件名中文乱码及变成空格问题
- 关于下载文件是文件名的空格显示不出来和乱码问题 转
- 火狐浏览器下载文件中文乱码,文件名中的空格变加号("+")的问题
- 解决FlashFXP5 不能下载中文文件名文件的问题(显示文件名中文正常下载文件名是乱码)
- 文件下载--Struts2的中文文件下载显示为空格问题
- 【转】彻底解决Asp.net文件下载(Response.WriteFile)时文件名的中文乱码和空格异常问题
- Evince查看pdf,中文字体无法显示的问题。特别是下载的论文/期刊pdf文件
- 【解决问题】文件名中含有中文,出现浏览器显示无法下载的情况
- 彻底解决Asp.net 文件下载时文件名的中文乱码和空格异常全球性技术难题
- 如何解决下载的CHM文件无法显示网页问题
- 如何解决下载的CHM文件无法显示网页问题
- php中强制下载文件的代码(解决了IE下中文文件名乱码问题)
- 解决从数据库下载文件时,中文文件名为乱码的问题!
- ubuntu下pdf文件打开中文无法显示的问题
- 解决Asp.net 实现文件下载时、输出文件时文件名的中文乱码和空格异常
- 终于解决了中文文件名文件下载的问题
- 文件下载(解决中文文件名下载乱码问题) 收集
- 如何解决下载的CHM文件无法显示网页问题