- 内容提要
- 作者简介
- 译者简介
- 前言
- HTTP
- Servlet 和 JSP
- 下载 Spring 或使用 STS 与 Maven/Gradle
- 手动下载 Spring
- 使用 STS 和 Maven/Gradle
- 下载 Spring 源码
- 本书内容简介
- 下载示例应用
- 第 1 章Spring 框架
- 第 2 章模型 2 和 MVC 模式
- 第 3 章Spring MVC 介绍
- 第 4 章基于注解的控制器
- 第 5 章数据绑定和表单标签库
- 第 6 章转换器和格式化
- 第 7 章验证器
- 第 8 章表达式语言
- 第 9 章JSTL
- 第 10 章国际化
- 第 11 章上传文件
- 第 12 章下载文件
- 第 13 章应用测试
- 附录 A Tomcat
- 附录 B Spring Tool Suite 和 Maven
- 附录 C Servlet
- 附录 D JavaServer Pages
- 附录 E 部署描述符
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
12.1 文件下载概览
为了将像文件这样的资源发送到浏览器,需要在控制器中完成以下工作:
(1)对请求处理方法使用 void 返回类型,并在方法中添加 HttpServletResponse 参数。
(2)将响应的内容类型设为文件的内容类型。Content-Type 标题在某个实体的 body 中定义数据的类型,并包含媒体类型和子类型标识符。欲了解标准的内容类型,请访问 http://www.iana.org/assignments/media-types。如果不清楚内容类型,并且希望浏览器始终显示 Sava As(另存为)对话框,则将它设为 APPLICATION/OCTET-STREAM。这个值是不区分大小写的。
(3)添加一个名为 Content-Disposition 的 HTTP 响应标题,并赋值 attachment; filename= fileName,这里的 fileName 是默认文件名,应该出现在 File Download(文件下载)对话框中。它通常与文件同名,但是也并非一定如此。
例如,以下代码将一个文件发送到浏览器:
FileInputStream fis = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fis);
byte[] bytes = new byte[bis.available()];
response.setContentType(contentType);
OutputStream os = response.getOutputStream();
bis.read(bytes);
os.write(bytes);
为了编程将一个文件发送到浏览器,首先要读取该文件作为 FileInputStream,并将内容加载到一个字节数组。随后,获取 HttpServletResponse 的 OutputStream,并调用其 write 方法传入字节数组。
将文件发送到 HTTP 客户端的更好方法是使用 Java NIO 的 Files.copy() 方法:
Path file = Paths.get(...);
Files.copy(file,response.getOutputStream());
代码更短,运行速度更快。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论