0%

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
@WebServlet("/Responsedemo4")
public class demo4 extends HttpServlet{
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException{
// 处理文件下载(把文件的数据相应给客户端)
// 1.文件名
String filename = "操作系统.md";
String path = "C:/Users/Retur0/Desktop/" + filename;
// 文件下载时,如下设置响应类型
// 如果文件名有中文,需要对文本进行URLencode,把中文变成%形式。
// 一个中文对应三个%的数据
filename = URLEncoder.encode(filename, "utf-8");
resp.setHeader("Content-disposition", "attachment;filename=" + filename);

// 2.获取文件输入流
FileInputStream fis = new FileInputStream(path);
// 3.获取输出流
ServletOutputStream sos = resp.getOutputStream();
// 4.从文件中读取数据,相应给客户端
byte[] buf = new byte[1024];
int len = 0;
while((len=fis.read(buf)) != -1) {
sos.write(buf, 0, len);
}
// 关闭输入流,输出流会自动关闭
fis.close();
}
}