通过实例了解如何在JavaWeb实现文件下载-创新互联

文件下载的方式

作为一家“创意+整合+营销”的成都网站建设机构,我们在业内良好的客户口碑。创新互联提供从前期的网站品牌分析策划、网站设计、网站制作、成都网站制作、创意表现、网页制作、系统开发以及后续网站营销运营等一系列服务,帮助企业打造创新的互联网品牌经营模式与有效的网络营销方法,创造更大的价值。
  • 超链接下载
  • 后台实现下载

案例实操

超链接下载

当我们在 HTML 或 JSP 页面中使用标签时,原意是希望能够进行跳转,但当超链接遇到浏览器不识别的动态网页时则会自动下载。如果浏览器遇到能够直接显示的资源,浏览器就会默认显示出来,比如 txt,png,jpg 等。当然我们也可以通过 download 属性规定浏览器进行下载。但有些浏览器并不支持。

默认下载

超链接下载

指定 download 属性下载

超链接下载

这里,download 也可以不写任何信息,会自动使用默认文件名。这样当用户打开浏览器点击链接的时候就会直接下载文件。

后台实现下载

Step1:需要通过 HttpServletResponse.setContentType 方法设置 Content-type 头字段的值,这样浏览器才能够使用某种方式或激活某个程序来处理相应 MIME 类型的数据,例 如 ”application/octet-stream” 或 ”application/x-msdownload” 等

Step2:需要通过 HttpServletResponse.setHeader 方法设置 Content-Disposition 头的值为”attachment;filename=文件名”,filename提供了文件下载时的一个默认文件名

Step3:读取下载文件,调用 HttpServletResponse.getOutputStream 方法返回的OutputStream对象来向客户端写入附件内容。

public class DownLoadServlet extends HttpServlet {
  private static final long serialVersionUID = 1L;

  protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    // 设置请求编码
    request.setCharacterEncoding("UTF-8");
    // 接受参数,得到需要被下载的文件的名称
    String fileName = request.getParameter("fileName");
    // 判断名字名是否为空
    if(fileName == null || "".equals(fileName)){
      // 提示
      System.out.println("文件名不能为空");
      return;
    }
    // 获取文件存放的真实路径
    String path = request.getServletContext().getRealPath("/" + fileName);
    // 通过文件路径和文件名得到file对象
    File file = new File(path);
    // 判断是否存在,并且是一个标准文件
    if (file.exists() && file.isFile()){
      // 设置相应类型 application/octet-stream
      response.setContentType("application/x-msdownload");
      // 设置头信息
      response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
      // 通过file对象得到输入流
      FileInputStream in = new FileInputStream(file);
      // 得到输出流
      ServletOutputStream out = response.getOutputStream();
      byte[] car = new byte[1024];
      int len = 0;
      while((len = in.read(car)) != -1){
        out.write(car,0,len);
      }
      // 关闭流
      in.close();
      out.close();
    } else {
      System.out.println("文件路径不正确!");
    }

  }

}

本文题目:通过实例了解如何在JavaWeb实现文件下载-创新互联
分享URL:http://pwwzsj.com/article/icddi.html