zoukankan      html  css  js  c++  java
  • servlet下载文件(五)

    1.servlet下载文件

      servlet下载文件就是将服务器端的文件传输到客户端。

    2案例

    下载文件servlet类

    package com.learn;
    
    import javax.servlet.ServletConfig;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.File;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    
    /**
     * Created by Administrator on 2017/09/24.
     */
    public class DownLoadServlet extends HttpServlet {
        private String filePath;
    
        @Override
        public void init(ServletConfig config) throws ServletException {
            super.init(config);
            filePath = config.getInitParameter("filePath");
            //初始化路径
            //filePath = config.getServletContext().getRealPath(filePath);
            System.out.println("初始化文件路径:"+filePath);
        }
    
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            doPost(req,resp);
    
        }
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
            OutputStream out; //输出流
            InputStream in; //输入流
    
            String fileName = req.getParameter("fileName");
            System.out.println("文件名称:"+fileName);
            //如果把文件名为null则提示用户
            if(fileName == null){
                out = resp.getOutputStream();
                out.write("please input fileName".getBytes());
                out.close();
            }
            //获取文件流
            in = getServletContext().getResourceAsStream(filePath+ File.separator+fileName);
            System.out.println(in==null?true:false);
            int length = in.available();
            
            //设置返回消息头部信息
            resp.setContentType("application/force-download");
            resp.setHeader("Content-Length",String.valueOf(length));
            resp.setHeader("content-disposition","attachment;filename=""+fileName+""");
            //输出文件到客户端
            out = resp.getOutputStream();
            int bytesend = 0 ;
            byte[] buff = new byte[512];
            while ((bytesend = in.read(buff))!= -1){
                out.write(buff,0,bytesend);
            }
            in.close();
            out.close();
        }
    }

    web.xml配置

      <servlet>
        <servlet-name>download</servlet-name>
        <servlet-class>com.learn.DownLoadServlet</servlet-class>
        <init-param>
            <param-name>filePath</param-name>
            <param-value>file</param-value>
        </init-param>
     </servlet>
     <servlet-mapping>
        <servlet-name>download</servlet-name>
        <url-pattern>/download</url-pattern>
     </servlet-mapping>
  • 相关阅读:
    CentOS 6.6 下源码编译安装MySQL 5.7.5
    CentOS 6.6下安装配置Tomcat环境
    Redhat6.7 切换Centos yum源
    css盒模型
    mysql 查询表占用空间大小
    ligerform 控件元素设置为只读
    FtpClient中文文件名下载失败问题
    java Runtime.exec() 执行问题
    java log4j动态生成log文件
    java udp地址匹配
  • 原文地址:https://www.cnblogs.com/wwyx-xi/p/7588503.html
Copyright © 2011-2022 走看看