zoukankan      html  css  js  c++  java
  • 通过Servlet设置文件下载

    文件下载

    1.获取要下载的文件的绝对路径

    但是使用getServletContext().getRealPath()方法在不同的服务器上所获得的实现是不一样的

    因为项目被打包入.war文件以后就失去了原来的目录结构,使用获取绝对路径的方法返回为NULL

    在这里我们可以使用另一个方法getResourceAsStream()获取路径

    String realPath = this.getServletContext().getRealPath("/download/1.jpg");

    InputStream inputStream = this.getServletContext().getResourceAsStream("/download/1.jpg");

    2.获取要下载的文件名

    String fileName = realPath.substring(realPath.lastIndexOf("")+);

    使用getResourceAsStream()方法时由于没有返回一个路径。所以这里的文件名需要自己赋值
    String fileName = "1.jpg";

    3.设置content-disposition响应头控制浏览器以下载文件的形式打开文件

    response.setHeader("content-disposition", "attachment;filename=" + fileName);

    4.获取要下载的文件输入流

    InputStream in = new FileInputStream(realPath);
    int len = 0;

    这里的步骤中由于realPath不再使用。所以输入流in可以不用。

    5.创建数据缓冲区

    byte[] buffer = new byte[1024];

    6.通过response对象获取OutputStream流

    OutputStream out = response.getOutputStream();

    7.将FileInputStream流写入到buffer缓冲区

    while((len = in.read(buffer)) > 0){ //这里的in换成inputStream

    8.使用OutputStream将缓冲区的数据输出到客户端浏览器

    out.write(buffer, 0, len);
    

    }

    9.关闭输入流

    in.close(); //这里同理

    测试结果

  • 相关阅读:
    Vue插件配置和 后台交互
    Vue项目环境搭建
    数据结构之链表
    数据结构之线性表顺序结构
    leetcode-- Longest Common Prefix
    数据结构之拓扑排序
    数据结构之shell排序
    数据结构之插入排序
    leetcode
    leetcode
  • 原文地址:https://www.cnblogs.com/transWang/p/6958376.html
Copyright © 2011-2022 走看看