使用springmvc实现文件下载有两种方式,都需要设置response的Content-Disposition为attachment;filename=test2.png

第一种可以直接向response的输出流中写入对应的文件流

第二种可以使用 ResponseEntity来向前端返回文件

一、使用response

@RestController

@RequestMapping("/download")

public class DownloadController {

@RequestMapping("/d1")

public ResultVo downloadFile(HttpServletResponse response){

String fileName="test.png";

try {

//获取页面输出流

ServletOutputStream outputStream = response.getOutputStream();

//读取文件

byte[] bytes = FileUtils.readFileToByteArray(new File("D:\\my-study\\test2.png"));

//向输出流写文件

//写之前设置响应流以附件的形式打开返回值,这样可以保证前边打开文件出错时异常可以返回给前台

response.setHeader("Content-Disposition","attachment;filename="+fileName);

outputStream.write(bytes);

outputStream.flush();

outputStream.close();

return ResultVoUtil.success("success");

} catch (IOException e) {

return ResultVoUtil.error(e);

}

}

}

推荐使用这种方式,这种方式可以以json形式给前台返回提示信息。

二、使用ResponseEntity

@Controller

@RequestMapping("/download2")

public class DownloadController2 {

private final static Logger logger= LoggerFactory.getLogger(CategoryDataController.class);

@GetMapping("/d2")

public ResponseEntity download2(){

//获取文件对象

try {

byte[] bytes = FileUtils.readFileToByteArray(new File("D:\\my-study\\bill-admin\\test2.png"));

HttpHeaders headers=new HttpHeaders();

headers.set("Content-Disposition","attachment;filename=test2.png");

ResponseEntity entity=new ResponseEntity<>(bytes,headers,HttpStatus.OK);

return entity;

} catch (IOException e) {

logger.error("下载出错:",e);

return null;

}

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

java mvc下载文件_Springmvc实现文件下载2种实现方法相关推荐

  1. Java多线程下载文件

    Java多线程下载文件 优化:合理利用服务器资源,将资源利用最大化,加快下载速度 一般有两种方式: 线程池里面有N个线程,多线程下载单个文件,将网络路径的文件流切割成多快,每个线程下载一小部分,然后写 ...

  2. java线程下载文件_Java多线程下载文件实例详解

    本文实例为大家分享了Java多线程下载文件的具体代码,供大家参考,具体内容如下 import java.io.File; import java.io.InputStream; import java ...

  3. 7z解压crc错误_百度网盘压缩下载文件的CRC校验错误的解决方法

    转载自:http://blog.sina.com.cn/s/blog_610787990102xcnv.html 百度网盘压缩下载文件的CRC校验错误的解决方法 从百度网盘用打包压缩方式下载的文件在解 ...

  4. JAVA中获取文件MD5值的四种方法

    JAVA中获取文件MD5值的四种方法其实都很类似,因为核心都是通过JAVA自带的MessageDigest类来实现.获取文件MD5值主要分为三个步骤,第一步获取文件的byte信息,第二步通过Messa ...

  5. 百度网盘压缩下载文件的CRC校验错误的解决方法

    转载自:http://blog.sina.com.cn/s/blog_610787990102xcnv.html 百度网盘压缩下载文件的CRC校验错误的解决方法 从百度网盘用打包压缩方式下载的文件在解 ...

  6. php保存文件和下载文件到本地的四种方法

    php保存文件和下载文件到本地的四种方法   本文操作环境:windows7系统.PHP7.1版,DELLG3电脑   php保存文件的方法   PHP下载保存文件到本地   经常需要点击按钮,然后弹 ...

  7. Java如何读取文件文本内容的几种方式汇总

    本文为joshua317原创文章,转载请注明:转载自joshua317博客 Java如何读取文件文本内容的几种方式汇总 - joshua317的博客 package com.joshua317;imp ...

  8. common-io-2.0的新功能之文件监控FileAlteration(文件监听的两种实现方法《很全的监听文件例子》)...

    common-io-2.0的新功能之文件监控FileAlteration(文件监听的两种实现方法<很全的监听文件例子>) 转载于:https://www.cnblogs.com/rocky ...

  9. 计算机不能再U盘新建文件夹,U盘无法建立新的文件夹?!三种小方法教你解决...

    原标题:U盘无法建立新的文件夹?!三种小方法教你解决 U盘是现代人常用的移动存储设备之一,特点是小巧易携带,容量大,因此深得用户喜欢.但是这小小的U盘一旦出现故障,就让人有点难以招架了,U盘不比电脑, ...

最新文章

  1. linux ngxtop安装安装及使用
  2. SSL 1055——能量项链_DP
  3. RSA非对称加密算法的安全性何在
  4. 阮一峰react demo代码研究的学习笔记 - demo5 debug
  5. 学用状态机模式,写的报销流程,请指教
  6. C#.NET根据数据库中0,1返回对应代表含义“男”,“女”等问题
  7. ros操作系统的介绍
  8. OneDrive文件数限制:150000
  9. 案例:模拟京东快递单号的查询效果
  10. c语言字符结构数组初始化,C语言结构体数组初始化问题
  11. 工作展望简短_工作展望简短_时间2017工作展望
  12. 未明学院:国际政治专业出身,如何pk掉港大、美籍商科生,拿下亚马逊市场部德勤offer!
  13. 唯品会测试工程师面试总结
  14. mysql安装,以及初始化密码
  15. oracle重复名字,oracle中的名字(names for oracle)
  16. Get Offer —— 能力素质考核训练
  17. MySQL连接配置文件密码加密以及解密
  18. centos java 安装
  19. 打印系统开发(24)——WinForm开发(45)——winform打印,自己设置打印纸张大小例如500*800px。应该怎么做呢?
  20. HT780S 编程软件 官方版 v1.07.04

热门文章

  1. Python求解进制问题(阿里巴巴2015笔试题)
  2. java注册系统服务_奇葩需求:springboot项目注册为windows系统服务并设置开机自启...
  3. JDBC中Statement接口提供的execute、executeQuery和executeUpdate之间的区别
  4. xp访问服务器显示没有权限,xp无法访问2008R2共享
  5. activeti user guide 中文_【澳洲大岩石】最好季节发团!省掉800澳币!无比震撼特价 再次应约出发 震撼之旅!一生难忘!全程中文导游!省心放心澳洲青年旅行社...
  6. php无限极,PHP无限极分类
  7. wincc怎么做一个弹出画面_wincc怎样弹出确认窗口?
  8. PHP编写增功能思路,php ztree如何实现增 删 改
  9. unity fixedupdate_Unity之滚球游戏(上)
  10. p10可以适配鸿蒙吗,鸿蒙系统支持旧机型吗