首页 > 其他 > 详细

Servlet实现文件下载

时间:2021-09-04 06:28:32      阅读:63      评论:0      收藏:0      [点我收藏+]

html中使用a标签的href属性链接到资源路径和url-pattern再加上?key=value

<h1>打开文件,href传输的路径是直接写资源路径的文件路径即可</h1>
<a href="/s5/downloadResource/wolf.jpg">点击会直接打开图片</a>
<a href="/s5/downloadResource/a.txt">直接打开文本文件</a>
<hr/>
<h1>下载文件,href传输的路径是Servlet资源路径加?加key和value</h1>
<a href="/s5/download?filename=wolf.jpg">下载图片</a>
<a href="/s5/download?filename=a.txt">下载文本</a>

服务端Servlet:文件下载案例的分析:

  1. 获取请求参数,getParameter()根据参数名获取参数值
  2. 获取getServletContext对象,用getServletContext对象的getRealpath()找到真实路径,再用字节输入流输入到内存
  3. 设置响应头的content-type为filename(filename是什么类型需要getMimeType去获取)
  4. 设置响应头的content-disposition为attachment附件打开
@WebServlet("/download")
public class DownloadServletTest extends HttpServlet {
  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // 1.获取请求参数,文件名称
    String filename = request.getParameter("filename");

    // 2.找到真实路径,使用字节输入流输入到内存
    ServletContext servletContext = request.getServletContext();
    String realPath = servletContext.getRealPath("/downlaodResource/" + filename); //+ filename动态的获取文件名,实现点拿个下载哪个
    FileInputStream fis = new FileInputStream(realPath);

    // 3. 设置响应头的content-type为filename(filename是什么类型需要getMimeType去获取)
    String mime = servletContext.getMimeType(filename);
    response.setHeader("content-type","mime");

    // 4. 设置响应头的content-disposition为attachment附件打开
    response.setHeader("content-disposition","attachment;filename"+filename);

    // 5.将输入流的数据写出到输出流中,完成对拷
    ServletOutputStream os = response.getOutputStream();
    byte[] buff = new byte[1024];
    int len = 0;
    while ((len = fis.read(buff)) != -1) {
      os.write(buff,0,len);
    }
    fis.close();
  }

  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    this.doPost(request,response);
  }
}

Servlet实现文件下载

原文:https://www.cnblogs.com/KyleHsu/p/15221626.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!