zoukankan      html  css  js  c++  java
  • java中文件下载的思路(参考:孤傲苍狼)

    文件下载

      文件下载功能是web开发中经常使用到的功能,使用HttpServletResponse对象就可以实现文件的下载

    文件下载功能的实现思路:

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

      2.获取要下载的文件名

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

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

      5.创建数据缓冲区

      6.通过response对象获取OutputStream流

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

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

    package gacl.response.study;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.io.PrintWriter;
    import java.net.URLEncoder;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    /**
     * @author gacl
     * 文件下载
     */
    public class ResponseDemo02 extends HttpServlet {
    
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            downloadFileByOutputStream(response);//下载文件,通过OutputStream流
        }
    
        /**
         * 下载文件,通过OutputStream流
         * @param response
         * @throws FileNotFoundException
         * @throws IOException
         */
        private void downloadFileByOutputStream(HttpServletResponse response)
                throws FileNotFoundException, IOException {
            //1.获取要下载的文件的绝对路径
            String realPath = this.getServletContext().getRealPath("/download/1.JPG");
            //2.获取要下载的文件名
            String fileName = realPath.substring(realPath.lastIndexOf("\")+1);
            //3.设置content-disposition响应头控制浏览器以下载的形式打开文件
            response.setHeader("content-disposition", "attachment;filename="+fileName);
            //4.获取要下载的文件输入流
            InputStream in = new FileInputStream(realPath);
            int len = 0;
            //5.创建数据缓冲区
            byte[] buffer = new byte[1024];
            //6.通过response对象获取OutputStream流
            OutputStream out = response.getOutputStream();
            //7.将FileInputStream流写入到buffer缓冲区
            while ((len = in.read(buffer)) > 0) {
            //8.使用OutputStream将缓冲区的数据输出到客户端浏览器
                out.write(buffer,0,len);
            }
            in.close();
        }
    
        public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            doGet(request, response);
        }
    }
  • 相关阅读:
    Python Day23
    Python Day22
    Python Day21
    Python Day20
    Python Day19
    Python Day18
    Python Day17
    python全栈开发 * 18 面向对象知识点汇总 * 180530
    python全栈开发 * 15知识点汇总 * 180621
    python全栈开发 * 14 知识点汇总 * 180530
  • 原文地址:https://www.cnblogs.com/ZX-LMY/p/6277040.html
Copyright © 2011-2022 走看看