本文实例为大家分享了servlet下载文件的具体代码,供大家参考,具体内容如下
1.servlet下载文件
servlet下载文件就是将服务器端的文件传输到客户端。
2案例
下载文件servlet类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
package com.learn; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; /** * Created by Administrator on 2017/09/24. */ public class DownLoadServlet extends HttpServlet { private String filePath; @Override public void init(ServletConfig config) throws ServletException { super .init(config); filePath = config.getInitParameter( "filePath" ); //初始化路径 //filePath = config.getServletContext().getRealPath(filePath); System.out.println( "初始化文件路径:" +filePath); } @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req,resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { OutputStream out; //输出流 InputStream in; //输入流 String fileName = req.getParameter( "fileName" ); System.out.println( "文件名称:" +fileName); //如果把文件名为null则提示用户 if (fileName == null ){ out = resp.getOutputStream(); out.write( "please input fileName" .getBytes()); out.close(); } //获取文件流 in = getServletContext().getResourceAsStream(filePath+ File.separator+fileName); System.out.println(in== null ? true : false ); int length = in.available(); //设置返回消息头部信息 resp.setContentType( "application/force-download" ); resp.setHeader( "Content-Length" ,String.valueOf(length)); resp.setHeader( "content-disposition" , "attachment;filename=\"" +fileName+ "\"" ); //输出文件到客户端 out = resp.getOutputStream(); int bytesend = 0 ; byte [] buff = new byte [ 512 ]; while ((bytesend = in.read(buff))!= - 1 ){ out.write(buff, 0 ,bytesend); } in.close(); out.close(); } } |
web.xml配置
1
2
3
4
5
6
7
8
9
10
11
12
|
< servlet > < servlet-name >download</ servlet-name > < servlet-class >com.learn.DownLoadServlet</ servlet-class > < init-param > < param-name >filePath</ param-name > < param-value >file</ param-value > </ init-param > </ servlet > < servlet-mapping > < servlet-name >download</ servlet-name > < url-pattern >/download</ url-pattern > </ servlet-mapping > |
原文链接:http://www.cnblogs.com/wwyx-xi/p/7588503.html