Servlet读取资源文件(文件的下载)

1. 文件名非中文:

 1 package ztq.servlet.study;
 2 
 3 import java.io.FileInputStream;
 4 import java.io.IOException;
 5 import java.io.InputStream;
 6 import java.io.OutputStream;
 7 
 8 import javax.servlet.ServletContext;
 9 import javax.servlet.ServletException;
10 import javax.servlet.http.HttpServlet;
11 import javax.servlet.http.HttpServletRequest;
12 import javax.servlet.http.HttpServletResponse;
13 
14 public class ServletDemo1 extends HttpServlet {
15     public void doGet(HttpServletRequest request, HttpServletResponse response)
16             throws ServletException, IOException {
17         //获取要下载的文件
18         ServletContext sc = getServletContext();
19         String path = sc.getRealPath("/pic.jpg");
20         
21         //通知客户端以下载的方式打开
22         response.setHeader("Content-Disposition", "attachment;filename = pic.jpg" );
23         response.setHeader("Content-type", "application/octet-stream");
24         
25         //构建输入输出流
26         InputStream in = new FileInputStream(path);
27         OutputStream out = response.getOutputStream();
28         byte[] buf = new byte[1024];
29         int len = 0;
30         while((len = in.read(buf)) != -1){
31             out.write(buf, 0, len);
32         }
33         in.close();
34         out.close();
35     }
36     public void doPost(HttpServletRequest request, HttpServletResponse response)
37             throws ServletException, IOException {
38         doGet(request, response);
39     }
40 }

 

2. 文件名含中文:

 1 package ztq.servlet.study;
 2 
 3 import java.io.FileInputStream;
 4 import java.io.IOException;
 5 import java.io.InputStream;
 6 import java.io.OutputStream;
 7 import java.net.URLEncoder;
 8 
 9 import javax.servlet.ServletContext;
10 import javax.servlet.ServletException;
11 import javax.servlet.http.HttpServlet;
12 import javax.servlet.http.HttpServletRequest;
13 import javax.servlet.http.HttpServletResponse;
14 
15 public class ServletDemo1 extends HttpServlet {
16     public void doGet(HttpServletRequest request, HttpServletResponse response)
17             throws ServletException, IOException {
18         //获取要下载的文件
19         ServletContext sc = getServletContext();
20         String path = sc.getRealPath("/人物.jpg");
21         
22         //截取文件名
23         String filename = path.substring(path.lastIndexOf("\\") + 1);
24         
25         //通知客户端以下载的方式打开
26         response.setHeader("Content-Disposition", "attachment;filename = " + URLEncoder.encode(filename, "UTF-8"));
27         response.setHeader("Content-type", "application/octet-stream");
28         
29         //构建输入输出流
30         InputStream in = new FileInputStream(path);
31         OutputStream out = response.getOutputStream();
32         byte[] buf = new byte[1024];
33         int len = 0;
34         while((len = in.read(buf)) != -1){
35             out.write(buf, 0, len);
36         }
37         in.close();
38         out.close();
39     }
40     public void doPost(HttpServletRequest request, HttpServletResponse response)
41             throws ServletException, IOException {
42         doGet(request, response);
43     }
44 }

 

posted @ 2016-09-25 10:50  Chris_z  阅读(1167)  评论(0编辑  收藏  举报