本文實例為大家分享了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