zoukankan      html  css  js  c++  java
  • 下载文件时HttpServletResponse设置响应头的Content-Disposition属性

    Content-Disposition属性有两种类型

    1. inline :将文件内容直接显示在页面
    2. attachment:弹出对话框让用户下载

    弹出对话框下载文件

    resp.setHeader("Content-Disposition", "attachment; filename="+fileName);

    web.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     3     xmlns="http://java.sun.com/xml/ns/javaee" 
     4     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
     5         http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
     6     id="WebApp_ID" version="3.0">
     7   <display-name>DownloadDemo</display-name>
     8   <welcome-file-list>
     9     <welcome-file>index.jsp</welcome-file>
    10   </welcome-file-list>
    11   
    12   <servlet>
    13       <servlet-name>download</servlet-name>
    14       <servlet-class>com.qf.servlet.DownloadServlet2</servlet-class>
    15   </servlet>
    16   <servlet-mapping>
    17       <servlet-name>download</servlet-name>
    18       <url-pattern>/download</url-pattern>
    19   </servlet-mapping>
    20 </web-app>

    servlet类

     1 public class DownloadServlet2 extends HttpServlet {
     2 
     3     @Override
     4     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
     5         //获取文件在tomcat下的路径
     6         String path = getServletContext().getRealPath("download/bb.txt");
     7 
     8         //让浏览器收到这份资源的时候, 以下载的方式提醒用户,而不是直接展示
     9         resp.setHeader("Content-Disposition", "attachment; filename=bb.txt");
    10         
    11         //转化成输入流
    12         InputStream is = new FileInputStream(path);
    13         OutputStream os = resp.getOutputStream();
    14         
    15         int len = 0;
    16         byte[] bts = new byte[1024];
    17         while ((len = is.read(bts)) != -1) {
    18             os.write(bts, 0, len);
    19         }
    20         os.close();
    21         is.close();
    22     }
    23 
    24     @Override
    25     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    26         doGet(req, resp);
    27     }
    28 }

    url:http://localhost:8080/DownloadDemo/download

    直接在浏览器页面打开文件

    resp.setHeader("Content-Disposition", "inline; filename="+fileName);

    修改servlet类

     1 public class DownloadServlet2 extends HttpServlet {
     2 
     3     @Override
     4     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
     5         //获取文件在tomcat下的路径
     6         String path = getServletContext().getRealPath("download/bb.txt");
     7 
     8         //让浏览器收到这份资源的时候, 以下载的方式提醒用户,而不是直接展示
     9         resp.setHeader("Content-Disposition", "inline; filename=bb.txt");
    10         
    11         //转化成输入流
    12         InputStream is = new FileInputStream(path);
    13         OutputStream os = resp.getOutputStream();
    14         
    15         int len = 0;
    16         byte[] bts = new byte[1024];
    17         while ((len = is.read(bts)) != -1) {
    18             os.write(bts, 0, len);
    19         }
    20         os.close();
    21         is.close();
    22     }
    23 
    24     @Override
    25     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    26         doGet(req, resp);
    27     }
    28     
    29 }

  • 相关阅读:
    Nginx 部署多个 web 项目(虚拟主机)
    Nginx 配置文件
    Linux 安装 nginx
    Linux 安装 tomcat
    Linux 安装 Mysql 5.7.23
    Linux 安装 jdk8
    Linux 安装 lrzsz,使用 rz、sz 上传下载文件
    springMVC 拦截器
    spring 事务
    基于Aspectj 注解实现 spring AOP
  • 原文地址:https://www.cnblogs.com/qf123/p/10058721.html
Copyright © 2011-2022 走看看