博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springmvc文件下载
阅读量:7114 次
发布时间:2019-06-28

本文共 1341 字,大约阅读时间需要 4 分钟。

1、

文件下载是web项目中常用的服务,在springmvc中常用ResponseEntity类来事项文件下载

2、ResponseEntity

ResponseEntity类实现响应头、文件数据(以字节存储)、状态封装在一起交给浏览器处理以实现浏览器的文件下载。简单的说ResponseEntity可以折这HttpHeaders和HttpStatus,通过对HttpHeaders和HttpStatus的设置可以使浏览器执行下载操作。

3、实现文件下载

步骤

  1. 获取到文件的存放的真实路径
  2. 根据接收到的文件名和文件真实路径创建文件实例(注意:这里不是创建一个文件,而是创建一个File型的实例)
  3. 设置响应头Content-Disposition浏览器根据这个响应头执行相应的操作和要下载的文件名
  4. 设置响应内容的MIME类型,以二进制流形式传输
  5. 返回ResponseEntity

具体代码:

@RequestMapping("/download")public ResponseEntity
download(@RequestParam("fileName") String fileName, HttpServletRequest req) throws IOException { // 获取文件存放的真实路径 String realPath = req.getServletContext().getRealPath("/WEB-INF/file"); //创建文件实例 File file = new File(realPath, fileName); //修改文件名的编码格式 String downloadFileName = new String(fileName.getBytes("UTF-8"), "UTF-8"); //设置httpHeaders,使浏览器响应下载 HttpHeaders headers = new HttpHeaders(); //告诉浏览器执行下载的操作,“attachment”告诉了浏览器进行下载,下载的文件 文件名为 downloadFileName headers.setContentDispositionFormData("attachment", downloadFileName); //设置响应方式为二进制,以二进制流传输 headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); return new ResponseEntity
(FileUtils.readFileToByteArray(file), headers, HttpStatus.CREATED);}

4、火狐浏览器测试

从图中我们可以看到,我们设置的Content-Disposition起效果,传输类型也为二进制。

1121080-20190525212746968-2086410745.png

转载于:https://www.cnblogs.com/hamawep789/p/10923967.html

你可能感兴趣的文章
005 使用SpringMVC开发restful API三--处理创建请求
查看>>
手机Soc芯片简介
查看>>
Gradle Java Web应用程序并在Tomcat上运行
查看>>
jz2440移植QT5.6【学习笔记】【原创】
查看>>
WPF 关于圆角的制作
查看>>
前端性能优化之WebP
查看>>
android studio 各种问题 应该能帮助到你们
查看>>
福州首届.NET开源社区技术交流会圆满成功
查看>>
.Net 鉴权授权
查看>>
MySql(十四):MySql架构设计——可扩展性设计之数据切分
查看>>
Ocelot简易教程(二)之快速开始1
查看>>
[Angular] Angular ngSwitch Core Directive In Detail
查看>>
JSON Web Token(JWT)使用步骤说明
查看>>
思绪:常想一二
查看>>
WPF - Group分组对ListBox等列表样式的约束
查看>>
getpwuid和getpwnam的用法
查看>>
C语言文件操作解析(一)
查看>>
matlab练习程序(Floyd–Steinberg dithering)
查看>>
Android之Handler用法总结
查看>>
《敏捷个人》周刊 第3期 (可下载)
查看>>