首页 > 技术文章 > 关于springmvc的文件下载简析

northern-light 2017-11-25 15:29 原文

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处进行设置

   

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

  

 

  

 

推荐阅读