7.2 文件下载
7.2 文件下载
示例: Spring MVC的文件下载
可能很多读者会觉得, 文件下载太简单, 直接在页面给出一个超链接, 该链接的href
属性等于要下载文件的文件名, 不就可以实现文件下载了吗? 这样做大部分时候的确可以实现文件下载, 但如果该文件的文件名为中文文件名, 在某些早期的浏览器上就会导致下载失败( 使用最新的Firefox
、Opera
、Chrome
、Safari
都可以正常下载文件名为中文的文件)。Spring MVC
提供了一个ResponseEntity
类型, 使用它可以很方便地定义返回的BodyBuilder
、HttpHeaders
和HttpStatus
。
download方法
1 |
|
代码分析
download
处理方法接收到页面传递的文件名filename
后, 使用Apache Commons FileUpload
组件的FileUtils
读取项目的images
文件夹下的该文件, 并将其构建成ResponseEntity
对象返回客户端下载。
使用ResponseEntity
对象, 可以很方便地定义返回的BodyBuilder
、HttpHeaders
和HttpStatus
。BodyBuilder
对象用来构建返回的Body
;HttpHeaders
类型代表的是Http
协议中的头信息;HttpStatus
类型代表的是Http
协议中的状态。 上面代码中的MediaType
, 代表的是Internet Media Type
, 即互联网媒体类型, 也叫作MIME
类型。
在Http
协议消息头中, 使用Content- Type
来表示具体请求中的媒体类型信息。 有关BodyBuilder
、MediaType
和HttpStatus
类的详细信息参考Spring MVC
的API
文档。
测试
单击下载页面的超链接, 显示文件正在下载。 结果如图 7.3 所示。
单击“ 浏览” 按钮, 选择下载文件保存的路径, 然后单击“ 确定” 按钮, 文件即会被顺利下载并保存。