1.   最近SSM 需要用到文件下载,以前没用过,在百度上找了好久发现没有一篇博客,对于此段代码进行详细讲解,
      这里是本人的个人总结,跟大家分享一下!!!不谢
  2.  
  3. /**
    * 文件下载
    * ResponseEntity:该类实现响应头、文件数据(以字节存储)、状态封装在一起交给浏览器处理以实现浏览器的文件下载
    * <p>
    * ResponseEntity 也可作为响应数据使用 与@ResponseBody 注解功能相似
    * 但是ResponseEntity的优先级高于@ResponseBody
    * 在不是ResponseEntity的情况下才去检查有没有@ResponseBody注解。
    * 如果响应类型是ResponseEntity可以不写@ResponseBody注解,写了也没有关系。
    * <p>
    * 简单粗暴的讲,个人理解:
    * @ResponseBody可以直接返回Json结果,
    * @ResponseEntity不仅可以返回json结果,还可以定义返回的HttpHeaders和HttpStatus
    */
    @RequestMapping("/download")
    public ResponseEntity<byte[]> download(HttpServletRequest request, @RequestParam String filename) throws IOException {
    //文件所在位置
    String downloadFilePath = request.getSession().getServletContext().getRealPath("/uploud");
    //获取要下载的文件
    File file = new File(downloadFilePath, filename);
  4.  
  5. //http头信息 设置一些约束之类的东西
    HttpHeaders headers = new HttpHeaders();
    //设置编码 为了解决中文名称乱码问题
    String downloadFileName = new String(filename.getBytes("UTF-8"), "iso-8859-1");
    //将编码加到http头信息中
    headers.setContentDispositionFormData("attachment", downloadFileName);
    /**
    * MediaType:互联网媒介类型
    * contentType:具体请求中的媒体类型信息
    * MediaType: 很多常量 多种类型可设置
    * APPLICATION_OCTET_STREAM:二进制流数据(如常见的文件下载)
    *
    * 还有一种常见的:
    * MULTIPART_FORM_DATA: 需要在表单中进行文件上传时,就需要使用该格式
    */
    headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
    /**
    * FileUtils.readFileToByteArray:读取文件到字节数组
    *
    * CREATED:201状态码:创建
    *
    * 简而言之,个人理解:
    * 创建/下载 一个根据http头信息约束的 字节数组(文件)
    */
    return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file), headers, HttpStatus.CREATED);
  6.  
  7. }

SpringMvc 文件下载 详解的更多相关文章

  1. SpringMVC RequestMapping 详解

    SpringMVC RequestMapping 详解 RequestMapping这个注解在SpringMVC扮演着非常重要的角色,可以说是随处可见.它的知识点很简单.今天我们就一起学习Spring ...

  2. 利用Intellij+MAVEN搭建Spring+Mybatis+MySql+SpringMVC项目详解

    http://blog.csdn.net/noaman_wgs/article/details/53893948 利用Intellij+MAVEN搭建Spring+Mybatis+MySql+Spri ...

  3. 【转】JSch - Java实现的SFTP(文件下载详解篇)

    上一篇讲述了使用JSch实现文件上传的功能,这一篇主要讲述一下JSch实现文件下载的功能.并介绍一些SFTP的辅助方法,如cd,ls等.   同样,JSch的文件下载也支持三种传输模式:OVERWRI ...

  4. JSch - Java实现的SFTP(文件下载详解篇)

    上一篇讲述了使用JSch实现文件上传的功能,这一篇主要讲述一下JSch实现文件下载的功能.并介绍一些SFTP的辅助方法,如cd,ls等. 同样,JSch的文件下载也支持三种传输模式:OVERWRITE ...

  5. JSch - Java实现的SFTP(文件下载详解篇)(转)

    上一篇讲述了使用JSch实现文件上传的功能,这一篇主要讲述一下JSch实现文件下载的功能.并介绍一些SFTP的辅助方法,如cd,ls等.   同样,JSch的文件下载也支持三种传输模式:OVERWRI ...

  6. 简单搭建SpringMVC框架详解

    在公司待了两年,用的一直是Spring+SpringMVC+Hibernate框架,都是公司自己搭建好的,自己从来没有主动搭建过,闲来无聊,自己搭建试试.一下即我搭建的过程以及搭建所遇到的问题,有部分 ...

  7. SpringMVC @ModelAttribute 详解

    [@Controller]4 详解@ModelAttribute http://blog.sina.com.cn/s/blog_6d3c1ec601017q4p.html A.@ModelAttrib ...

  8. SpringMVC配置文件详解:<context:annotation-config/>和<context:component-scan base-package=""/>和<mvc:annotation-driven />

    原文地址:https://www.cnblogs.com/lcngu/p/5080702.html Spring配置文件详解:<context:annotation-config/>和&l ...

  9. SpringMVC Controller详解

    SpringMVC Controller 介绍 一.简介 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理 ...

随机推荐

  1. mysql 架构~mgr具体细节分析

    一 简介:今天咱们来聊聊mgr的具体实现细节 二 关于多点写入的锁冲突问题以及处理:   certify模块主要负责检查事务是否允许提交,是否与其它事务存在冲突,如两个事务可能修改同一行数据.在单机系 ...

  2. [转]C++11的enum class & enum struct和enum

    1. 旧版enum存在的问题 问题 描述 1 向整形的隐式转换(Implicit conversion to an integer) 2 无法指定底层所使用的数据类型(Inability to spe ...

  3. web前端最全各类资源

    链接:http://www.sohu.com/a/157593700_132276

  4. Latex 公式居中

    这么简单的功能要是还要加工具包,LaTeX也不用混了~ 公式用\[...\]来写可以达到公式居中效果. 或者在equation环境外加center环境: \begin{center} \begin{e ...

  5. 基于Python的机器学习实战:KNN

    1.KNN原理: 存在一个样本数据集合,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一个数据与所属分类的对应关系.输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应 ...

  6. Potential Pythonic Pitfalls

    Potential Pythonic Pitfalls Monday, 11 May 2015 Table of Contents Not Knowing the Python Version Obs ...

  7. UML和模式应用4:初始阶段(3)--需求制品之用例模型

    1. 前言 UP开发包括四个阶段:初始阶段.细化阶段.构建阶段.移交阶段: UP每个阶段包括 业务建模.需求.设计等科目: 其中需求科目对应的需求制品包括:设想.业务规则.用例模型.补充性规格说明.词 ...

  8. WiFi基本知识【转】

    转自:http://blog.csdn.net/myarrow/article/details/7930131 1. IE802.11简介 标准号 IEEE 802.11b IEEE 802.11a ...

  9. C# .NET Winform等程序一运行就闪退 不同环境 换到其他电脑,例如XP之类的解决方法。

    我现在写标题就跟写tag一样,方便大家索引. 有时候经常会把.NET写的程序拿到其他客户机,发现直接闪退,啥也不报错..那就很蛋疼,又不可能去装IDE来检测是吧,网上还有很多说啥看系统日志的,什么图标 ...

  10. 通过本地yum源安装软件报错[Errno 14] PYCURL ERROR 56 - "Failure when receiving data from the peer"

    通过本地yum源安装软件报错 http://192.168.3.85/centos/6/os/x86_64/Packages/php-pdo-5.3.3-47.el6.x86_64.rpm: [Err ...