@WebServlet("/download")
public class FileServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
/*
* 1. 要获取下载文件的路径
* 2. 下载的文件名是啥
* 3. 设置想办法让浏览器能够支持下载我们需要的东西
* 4. 获取下载文件的输入流
* 5. 创建缓冲区
* 6. 获取OutputStream对象
* 7. 将FileOutPutStream流写入到buffer缓冲区
* 8. 使用OutPutStream将缓冲区中的数据输出到客户端
* */
//1.获取下载文件的路径
//ServletContext servletContext = this.getServletContext();
//String realPath1 = servletContext.getRealPath();
String realPath="C:\\Users\\HP\\Desktop\\1.png";
//2.下载的文件名是啥
String fileName=realPath.substring(realPath.lastIndexOf("\\")+1);
//3.设置想办法让浏览器能够支持(Content-Disposition)下载我们需要的东西
resp.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 = resp.getOutputStream();
//7.将FileOutPutStream溢写入到buffer缓冲区,使用OutPutStream将缓冲区的数据输出到客户端
while((len=in.read(buffer))>0){
out.write(buffer,0,len);
}
in.close();
out.close();
}
JavaWeb实现文件下载 (案例)
最新推荐文章于 2024-08-01 15:05:06 发布