沫沫金在解决生成文档的最后,需要实现客户端下载功能。就好好写了一个完善的方法,贡献给大家。

特点:

-中文支持

-全文当支持*.rar,*.zip,*.txt,*.doc

-拷贝后直接使用

提示:

URLEncoder使用Jar包

  1. import java.net.URLEncoder 


解决方案:

  1. //这么调用sunvinsDown(root+"/",strFileName,response);就好  
  2. public static void sunvinsDown(String filePath,String fileName,HttpServletResponse response)  
  3. throws Exception {  
  4. File file = new File(filePath+fileName);  
  5. if(!file.exists()){  
  6. System.out.println("文件不存在");  
  7. }else{  
  8. FileInputStream fis = new FileInputStream(file);  
  9. BufferedInputStream bis = new BufferedInputStream(fis);  
  10.  
  11. OutputStream os=response.getOutputStream();  
  12. BufferedOutputStream bos=new BufferedOutputStream(os);  
  13.  
  14. fileName=URLEncoder.encode(fileName,"UTF-8");  
  15. fileName=new String(fileName.getBytes("UTF-8"),"GBK");  
  16.  
  17. response.reset(); 
  18. response.setContentType("UTF-8");  
  19. response.setContentType("Application/x-msdownload");  
  20. response.setHeader("Content-Disposition", "p_w_upload;filename="+fileName);  
  21. response.setHeader("Content-Length", String.valueOf(bis.available()));  
  22.  
  23. int bytesRead=0;  
  24. byte[] buffer=new byte[1024];  
  25. while((bytesRead=bis.read(buffer))!=-1){  
  26. bos.write(buffer,0,bytesRead);  
  27. }  
  28. bos.flush();  
  29. bos.close();  
  30. bis.close();  
  31.  
  32. os.close();  
  33. fis.close();  
  34. }