在JAVA WEB程序的文件下载中,经常会出现文件名乱码以及文件下载框难以打开文件问题,并且经过反复测试,在firefox与IE上文件名乱码的处理方法差异较大,核心代码如下:
response.reset();
//解决在弹出文件下载框不能打开文件的问题
response.setContentType("application/octet-tream;charset=GBK");
//解决文件名乱码问题,一定要编码
response.addHeader("Content-Disposition", "attachment;filename="
+ new String(fileName.getBytes("GBK"),"ISO8859-1"));
//经过多次测试,firefox等浏览器则需要转码,代码如下
//response.addHeader("Content-Disposition","attachment; filename=" + java.net.URLEncoder.encode(fileName, "UTF-8"));
//解决在弹出文件下载框不能打开文件的问题
response.setContentLength((int) file.length());