Servlet实现文件下载
程序员文章站
2022-05-24 14:34:51
...
在浏览网站的时候很多涉及到文件下载的情况,在初学JavaWeb的时候我们如何使用Servlet来实现文件下载呢?
在学习此之前,我们要知道两个重要的概念。request和response。请求和相应。
请求:请求头、请求行、请求体。
相应:相应头、相应行、相应体。
大家可以上网找一下上面提到的这几个关键点。
下面我们直接上代码来演示文件下载:
将网站提供的图片复制到项目中src路径下面;
然后在Servlet中doGet或者doPost方法中提供下面的代码:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//通过路径得到一个输入流
String path = this.getServletContext().getRealPath("/WEB-INF/classes/111.jpg");
FileInputStream fis = new FileInputStream(path);
//创建字节输出流
ServletOutputStream sos = response.getOutputStream();
//得到要下载的文件名
String fileName = path.substring(path.lastIndexOf("\\")+1);
//设置文件名的编码,将不安全的文件名改为UTF-8
fileName = URLEncoder.encode(fileName,"UTF-8");
//告知客户端要下载文件
response.setHeader("content-disposition","attachment;filename="+fileName);
response.setHeader("content-type","image/jpeg");
//执行输出操作
int len = 1;
byte[] buff = new byte[1024];
while((len=fis.read(buff))!=-1){
sos.write(buff,0,len);
}
//关闭资源
sos.close();
fis.close();
}
web项目部署,通过浏览器访问该servlet。