• 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);
        }
    }
  • 相关阅读:
    架构之道(1)
    看板管理(1)
    交互原型图
    Sequence Diagram时序图
    安卓项目的「轻」架构
    安卓ButtomBar实现方法
    工具类BitMap 把网络URL图片转换成BitMap
    使用OkHttp上传图片到服务器
    BaseAdapter教程(2) BaseAdapter的notifyDataSetChanged动态刷新
    开发中时间变换问题汇总
  • 原文地址:https://www.cnblogs.com/ZX-LMY/p/6277040.html
Copyright © 2020-2023  润新知