Servlet 之文件下载

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;
import java.net.URLEncoder;

public class FileDownload extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String filePath = "文件路径";
        //通过文件路径获取文件名
        String fileName = filePath.substring(filePath.lastIndexOf("\\"));
        resp.setHeader("Content-Disposition","attachment;filename=" + URLEncoder.encode(fileName,"utf-8"));
        FileInputStream in = new FileInputStream(filePath);
        int len;
        //字节数组的大小随各人习惯设置;也可以设置为 in.available() ,如此缓冲区大小刚好,不必再循环读取了
        byte[] bytes = new byte[8];
        ServletOutputStream out = resp.getOutputStream();
        while((len = in.read(bytes)) != -1) {
            out.write(bytes,0,len);
        }
        out.flush();
        out.close();
        in.close();
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}
参考资料:
【狂神说Java】JavaWeb入门到实战(视频) https://www.bilibili.com/video/BV12J411M7Sj?p=12
Java——IO流超详细总结-博客园-说故事的五公子 https://www.cnblogs.com/wugongzi/p/12092326.html
posted @ 2021-08-17 16:53  realzhangsan  阅读(40)  评论(0编辑  收藏  举报