【ZT】jsp文件下载,解决中文名称乱码

来源:互联网 发布:mac如何强制关机 编辑:程序博客网 时间:2024/05/20 16:41
http://blog.csdn.net/missukiss02/article/details/6695791

  1. String sql = "";  
  2. ResultSet rs = null;  
  3. String fileRoute = "";  
  4. String fileName = "";  
  5. DBHelp dbHelp = new DBHelp("HNGH");  
  6. id = Integer.parseInt(idstr);  
  7. sql = "select * from sde.GHWJFiles where id=" + id;  
  8. rs = dbHelp.select1(sql);  
  9. while (rs.next()) {  
  10.                                     //rs.getString(4) 是文件夹的名称 ,rs.getString("FileName") 文件名  
  11.     fileRoute = application.getRealPath("/") + "SaveFiles\\" + rs.getString(4) + "\\" + rs.getString("FileName");  
  12.     fileName=rs.getString("FileName");  
  13. }   
  14. //创建file对象  
  15. File file=new File(fileRoute);  
  16. //设置response的编码方式  
  17. response.setContentType("application/x-msdownload");  
  18. //写明要下载的文件的大小  
  19. response.setContentLength((int)file.length());  
  20. //解决中文乱码  
  21. response.setHeader("Content-Disposition","attachment;filename="+new String(fileName.getBytes("gbk"),"iso-8859-1"));   
  22. //读出文件到i/o流  
  23. FileInputStream fis=new FileInputStream(file);  
  24. BufferedInputStream buff=new BufferedInputStream(fis);  
  25. byte [] b=new byte[1024];  
  26. //相当于我们的缓存  
  27. long k=0;  
  28. //该值用于计算当前实际下载了多少字节  
  29. //从response对象中得到输出流,准备下载  
  30. OutputStream myout=response.getOutputStream();  
  31. //开始循环下载  
  32. while(k<file.length()){  
  33.     int j=buff.read(b,0,1024);  
  34.     k+=j;  
  35. //将写入到客户端的内存的数据,刷新到磁盘  
  36.     myout.write(b,0,j);  
  37. }     
  38. out.clear();  
  39. out = pageContext.pushBody();