import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.URLEncoder;
@WebServlet("/FileServlet")
public class FileServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 1、获取下载文件的路径
String realPath="H:\\Maven\\ServletTest\\Download\\src\\main\\resources\\天空.png";
System.out.println(realPath);
// 2、下载的文件名是啥
String fileName = realPath.substring(realPath.lastIndexOf("\\") + 1);
// 3、设置浏览器能够支持下载的东西,中文文件名需要指定编码方式,否则可能会乱码
response.setHeader("Content-Disposition","attachment;filename="+ URLEncoder.encode(fileName,"utf-8"));//分号改成冒号会展示图片而不会下载
// 4、获取下载文件的输入流
FileInputStream in=new FileInputStream(realPath);
// 5、创建缓冲区
int len=0;
byte[] buffer=new byte[1024];
// 6、获取outputStream对象
ServletOutputStream out= response.getOutputStream();
// 7、将FileOutputStream流写入buffer,使用outputStream将缓冲区数据输出到客户端
while((len=in.read(buffer))>0)
{
out.write(buffer,0,len);
}
in.close();
out.close();
}
}