码迷,mamicode.com
首页 > 其他好文 > 详细

servlet 文件下载

时间:2014-07-30 20:41:04      阅读:343      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   java   使用   os   strong   

【本文简介】

一个servlet 文件下载 的简单例子。

 

【文件夹结构】

bubuko.com,布布扣

 

【java代码】

 1 package com.zjm.www.servlet;
 2 
 3 import java.io.BufferedInputStream;
 4 import java.io.BufferedOutputStream;
 5 import java.io.File;
 6 import java.io.FileInputStream;
 7 import java.io.IOException;
 8 import java.io.InputStream;
 9 import java.io.OutputStream;
10  
11 import javax.servlet.ServletException;
12 import javax.servlet.http.HttpServlet;
13 import javax.servlet.http.HttpServletRequest;
14 import javax.servlet.http.HttpServletResponse;
15 
16 /**
17  * @描述 servlet 文件下载
18  * @作者   小M
19  * @博客 http://www.cnblogs.com/xiaoMzjm/
20  * @时间 2014/07/30
21  */
22 public class DownLoadServlet extends HttpServlet {
23     
24  
25     private static final long serialVersionUID = 1L;
26      
27     public void doGet(HttpServletRequest request, HttpServletResponse response)
28             throws ServletException, IOException {
29         doPost(request,response);
30     }
31     
32     public void doPost(HttpServletRequest request, HttpServletResponse response)
33             throws ServletException, IOException {
34          
35         // 转码,建议使用过滤器过滤。
36         request.setCharacterEncoding("UTF8");
37         response.setCharacterEncoding("UTF8");
38          
39         // 获取上传文件的  文件名
40         String fileName = request.getParameter("fileName");
41          
42         // 文件所放的文件夹,服务器文件相对路径。有关路径问题,请参考另一篇博文:http://www.cnblogs.com/xiaoMzjm/p/3878758.html
43         String path = request.getServletContext().getRealPath("/")+"\\DownLoadFile\\";
44          
45         // 下载路径 = 文件所放的文件夹 + 文件名
46         String downLoadPath = path + fileName;
47          
48         // 创建输入流 连接文件,并把文件 读 到流中
49         File file = new File(downLoadPath);
50         InputStream fis = new BufferedInputStream(new FileInputStream(file));
51         
52         // 判断文件有有多少字节可以读
53         byte[] buffer = new byte[fis.available()];
54         fis.read(buffer);
55         fis.close();
56  
57         // 清空response
58         response.reset();
59          
60         /**
61          *  设置response的Header,必须设。
62          *  【几个头文件简介】:
63          *  1、Content-disposition是MIME协议的扩展,此协议可让浏览器弹出下载框。同时可以改变下载时文件的文件名。
64          *  2、Content-Length用于描述HTTP消息实体的传输长度。
65          *    在HTTP协议中,消息实体长度和消息实体的传输长度是有区别,比如说gzip压缩下,消息实体长度是压缩前的长度,消息实体的传输长度是gzip压缩后的长度。
66          */
67         response.addHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes("utf-8"),"ISO-8859-1"));
68         response.addHeader("Content-Length", "" + file.length());
69         OutputStream out = new BufferedOutputStream(response.getOutputStream());
70         
71         /**
72          *  配置MIME类型,通知浏览器下载的文件的格式。
73          *  更多   MIME类型  和  后缀名   的映射可在百度文库搜索 : “MIME类型大全” 或者戳中连接:
74          *  http://wenku.baidu.com/link?url=SIJffXFE68HnvhI39h0c0PtjSzz7v8SoYzo274HcEx8jYRm-V07_WkotLQdVnT_JGyNhIUY_bjQRgnfz_b53rg5EnHD_ist84Pq-uWMYjyG
75          */
76         response.setContentType("application/octet-stream");
77  
78         // 输出
79         out.write(buffer);
80         out.flush();
81         out.close();
82     }
83 }

 

servlet 文件下载,布布扣,bubuko.com

servlet 文件下载

标签:style   blog   http   color   java   使用   os   strong   

原文地址:http://www.cnblogs.com/xiaoMzjm/p/3878835.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!