package com.wyl.servlet;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.FileInputStream;
import java.io.IOException;
public class FileServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1.获取文件下载路径
//String realPath = this.getServletContext().getRealPath("/桌面图片.png");
String realPath = "D:\idea项目\javaweb-servlet\response\target\classes\1.png";
System.out.println("文件路径"+realPath);
//2.下载的文件名是什么
//substring传递一个参数代表从索引1的字符串开始,到结束
//路径realpath.lastIndexOf ABCDABCD".lastIndexOf("BC") ;返回5
String filename = realPath.substring(realPath.lastIndexOf("\") + 1);
System.out.println("下载的文件名"+filename);
//3让浏览器支持(Content-disposition)我们下载所需要的东西
resp.setHeader("Content-disposition","attachment;filename="+filename);
//4.获取要下载文件的输入流
FileInputStream in = new FileInputStream(realPath);
//5.创建缓冲区
int len=0;
byte [] buffer=new byte[1024];
//6.获取outputStream对象
ServletOutputStream outputStream = resp.getOutputStream();
//7.将FileInputStream写道buff缓冲区
while ((len=(in.read(buffer)))>0){
//8.相应到客户端
outputStream.write(buffer,0,len);
}
//关闭流
in.close();
outputStream.close();
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}