Java 实现文件下载--解决中文乱码
2017-12-10 10:53
519 查看
java 文件下载中文乱码问题。期初我认为是不通浏览器的兼容问题,但是实际上就是。看下面一段代码
这段下载的代码在浏览器谷歌、火狐下都是正常的,但是在IE下却会乱码。开始也考虑过转码:
但是问题没有解决。做前端与浏览器的兼容战斗从没有停止过。最终看到别人带的微博,找到了一种兼容的方法:
这个方法并没有做全面的测试,但是目前的问题已解决。
/** * 文件下载 * @param response * @param filePath */ public void fileDownLoad(HttpServletResponse response,String filePath){ File f = new File(filePath); if(!f.exists()){ System.out.println("==下载文件不存在=="+filePath); return; } String fileName = f.getName();//文件名 response.setCharacterEncoding("UTF-8"); response.setContentType("multipart/form-data"); InputStream is = null; OutputStream os = null; try { System.out.println("===fileDowload==文件名:"+fileName); //String tempFileName =new String(fileName.getBytes("utf-8"),"ISO-8859-1"); String tempFileName = URLEncoder.encode(fileName, "UTF-8"); response.setHeader("Content-Disposition","attachment;fileName="+tempFileName);//设置响应的文件名 response.setHeader("Content-Length",String.valueOf(f.length()));//设置文件大小 is = new FileInputStream(new File(filePath)); os = response.getOutputStream(); byte[] b = new byte[1024]; int length=0; while((length=is.read(b))>0){ os.write(b, 0, length); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ try{ if(is != null) is.close();//关闭流 if(os != null) os.close(); }catch(Exception ex){ ex.printStackTrace(); } } }
这段下载的代码在浏览器谷歌、火狐下都是正常的,但是在IE下却会乱码。开始也考虑过转码:
String tempFileName =new String(fileName.getBytes("utf-8"),"ISO-8859-1");
但是问题没有解决。做前端与浏览器的兼容战斗从没有停止过。最终看到别人带的微博,找到了一种兼容的方法:
response.setHeader("Content-Disposition","attachment;fileName=\""+tempFileName+"\"");//设置响应的文件名
这个方法并没有做全面的测试,但是目前的问题已解决。
相关文章推荐
- java实现中文文件下载,解决乱码问题,亲测无问题~~
- Java实现文件下载并解决中文文件名乱码
- java实现ftp文件上传下载,解决慢,中文乱码,多个文件下载等问题
- java实现浏览器下载文件,并解决兼容各浏览器的文件下载中文乱码
- Java实现文件下载并解决中文文件名乱码
- Java实现ftp文件上传下载解决慢中文乱码多个文件下载等问题
- java实现文件下载 中文文件名乱码的解决
- java实现浏览器下载文件,并解决兼容各浏览器的文件下载中文乱码
- jsp实现文件下载与中文文件名乱码问题解决
- Java文件下载之解决中文乱码
- 实现文件下载与中文文件名乱码问题解决
- java下载文件在各个浏览器差异 以及中文乱码解决
- Java底层代码实现单文件读取和写入(解决中文乱码问题)
- 用response对象实现文件下载,解决中文文件名乱码。
- java文件上传与下载(springmvc框架下)及enctype=”multipart/form-date导致的中文乱码的解决
- java下载文件中文乱码情况解决方法
- java文件下载的中文文件名乱码问题的解决
- jsp实现文件下载与中文文件名乱码问题解决
- Java 下载文件(如Excel)文件名中文乱码或缺失解决方法
- JSP实现文件下载同时解决中文乱码问题