zoukankan      html  css  js  c++  java
  • 关于springmvc的文件下载简析

    1.文件下载思路:

       点击下载操作后,会将前端的数据传输到Controller,根据获得的数据(可能是文件id,文件name等等)去数据库

    询出文件的具体信息(文件的类型,文件的存储路径,文件大小等等),然后根据文件的路径,用输入流去读取数据,

    通过HttpServletResponse对象response.getOutputStream得到一个输出流, 然后以流的形式将数据返回到浏览器。

    需要设置头信息,去告知浏览器此次行为是下载。

      1.获取文件相关信息

        例如:文件的ID、文件的实际名称、文件的类型、文件的实际存储路径、文件的大小等(根据实际情况获取)

      2.设置文件下载名称(需要有表示文件类型的后缀:.png/.gif/.pig等)

        

      3.处理中文 下载名称 乱码问题

        HttpServletRequest  req   msie:IE浏览器

        通过req去获得浏览器的类型,根据浏览器类型设置不同的编码方式

        

      4.设置响应头信息

        response.setContentType("image/jpg") 根据文件实际类型进行设置

        response.setHeader("Content-Disposition","attachment;filename="+filename):弹框效果,并设置下载文件名

        //response.setContentLength(len);

        //response.setCharacterEncoding(charset);

      5.根据文件url,使用输入流读取文件

        InputStream is = new FileInputStream(new File(url));

        OutputStream os = response.getOutputStream();

        IOUtils.copy(is, os);

        //将数据以流的形式返回到浏览器

      6.关流(遵守 先开后关的原则)

        先创建的流后关闭

      这是一个简单的下载实现,下载tomcat上images文件夹下的FirstPS.jpg文件,文件信息直接在Controller处进行设置

       

      这个是下载网络上的一张图片的代码

      

      

    人生没有彩排,每天都是现场直播!
  • 相关阅读:
    BZOJ 1098[POI2007]办公楼
    BZOJ 3629[JLOI2014]聪明的燕姿
    BZOJ 1064[NOI2008]假面舞会
    BZOJ 2818GCD
    【五校联考6day2】san
    【五校联考6day2】er
    【五校联考6day2】yi
    【五校联考3day2】B
    【五校联考5day1】序列
    【五校联考3day2】A
  • 原文地址:https://www.cnblogs.com/northern-light/p/7895373.html
Copyright © 2011-2022 走看看