SpringMvc下载excel文件

对于web开发中的下载文件,程序只需要通过response获得文件输出流,剩下的就交给浏览器了。
不用想太复杂啊不用理保存到本地的姿势啊!那是浏览器的工作~

  1. @RequestMapping  
  2.     public void download(HttpServletRequest request,  
  3.             HttpServletResponse response) throws Exception {  
  4.         response.setContentType("text/html;charset=UTF-8");   
  5.         BufferedInputStream in = null;  
  6.         BufferedOutputStream out = null;  
  7.         request.setCharacterEncoding("UTF-8");  
  8.         String rootpath = request.getSession().getServletContext().getRealPath(  
  9.                 "/");  
  10.         String fileName = request.getParameter("f");  
  11.         fileName=CommonProperty.getValue(fileName);  
  12.         try {  
  13.             File f = new File(rootpath + "template/" + fileName);  
  14.             response.setContentType("application/x-excel");  
  15.             response.setCharacterEncoding("UTF-8");  
  16.               response.setHeader("Content-Disposition""attachment; filename="+fileName);  
  17.             response.setHeader("Content-Length",String.valueOf(f.length()));  
  18.             in = new BufferedInputStream(new FileInputStream(f));  
  19.             out = new BufferedOutputStream(response.getOutputStream());  
  20.             byte[] data = new byte[1024];  
  21.             int len = 0;  
  22.             while (-1 != (len=in.read(data, 0, data.length))) {  
  23.                 out.write(data, 0, len);  
  24.             }  
  25.         } catch (Exception e) {  
  26.             e.printStackTrace();  
  27.         } finally {  
  28.             if (in != null) {  
  29.                 in.close();  
  30.             }  
  31.             if (out != null) {  
  32.                 out.close();  
  33.             }  
  34.         }  
  35.   
  36.     }  



程序实现下载需设置两个响应头:
•设置Content-Type 的值为: application/x-msdownload Web  服务器需要 告诉浏览器其所输出的内容的类型不是普通的文本文件或 HTML 文件, 而是 一个要保存到本地的下载文件
Web  服务器希望浏览器不直接处理相应的 实体内容,而是 由用户选择将相应 的实体内容保存到一个文件中,这 需要设置  Content-Disposition  报头。该报头指定了接收程序处理数据内容的方式,在 HTTP 应用中 只有 attachment  是标准方式,attachment 表示要求用户干预。在 attachment 后面还可以指定 filename 参数,该参数是服务器建议 浏览器将实体内容保存到 文件中的文件名称。在设置 Content-Dispostion 之前一定要指定 Content-Type.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值