上QQ阅读APP看书,第一时间看更新
3.8 文件的上传和下载
3.7节介绍了利用Thymeleaf模板进行国际化的使用,本节将使用FreeMarker模板进行文件的上传和下载,对前面Spring Boot使用模板框架进行一个回顾。
创建项目、项目依赖和配置文件与3.5节使用FreeMarker一致。在配置完依赖后,在src/main/resources/templates下新建一个index.ftl文件,文件内分别利用表单提交的方式写了两个表单,用于单个上传和批量上传,并且使用超链接的方式提供了一个下载方法,代码如代码清单3-40所示。
更改启动类,在类上添加注解@Controller,新建index方法用于跳转,向页面传值msg,方法如代码清单3-41所示。
接下来创建一个FileController用于文件上传和下载测试,具体方法如下:
(1)单个上传方法。可以根据页面上使用的input标签的name值获取对应内容,因为是文件,所以可以使用MultipartFile对象来接收文件,由于只是简单测试,因此利用File类自带的transferTo方法直接将文件存入对应存储位置。
(2)批量上传方法。获取页面内容的方式和单个上传方法大致相同,不同的是取得文件后,这里使用BufferedOutputStream流来进行上传,如果对Java流不太了解,那么可以学习一下相关流的知识,注意在使用结束后不要忘记关闭流。
(3)下载方法。本文中例子只是对固定位置的文件进行下载,在实际应用中,可以根据具体情况进行修改。同样,下载方法也是使用流的方式,并且响应到浏览器。
FileController类代码如代码清单3-42所示。
本节只是进行简单的上传和下载,当然上述方法并不适用于大文件,只是对使用FreeMarker模板进行一个回顾。