Spring Boot 文件上传与下载的示例代码

文件的上传及下载功能是开发人员在日常应用及编程开发中经常会遇到的 。正好最近开发需要用到此功能 , 虽然本人是 Android 开发人员 , 但还是业余客串了一下后台开发 。
在本文中 , 您将学习如何使用 Spring Boot 实现 Web 服务中的文件上传和下载功能 。首先会构建一个 REST APIs 实现上传及下载的功能 , 然后使用 Postman 工具来测试这些接口 , 最后创建一个 Web 界面使用 JavaScript 调用接口演示完整的功能 。最终界面及功能如下:

Spring Boot 文件上传与下载的示例代码

文章插图
Spring Boot 文件上传与下载的示例代码

文章插图
项目环境
Spring Boot 文件上传与下载的示例代码

文章插图
项目创建
开发环境为 Intellij IDEA , 项目创建很简单 , 按照下面的步骤创建即可:
File -> New -> Project...
选择 Spring Initializr , 点击 Next
填写 Group (项目域名) 和 Artifact (项目别名)
构建类型可以选择 Maven 或 Gradle , 看个人习惯
添加 Web 依赖
输入项目名称及保存路径 , 完成创建
项目创建完毕之后就可以进行开发 , 项目的完整结构如下图所示:
Spring Boot 文件上传与下载的示例代码

文章插图
Spring Boot 文件上传与下载的示例代码

文章插图
参数配置
项目创建完成之后 , 需要设置一些必要的参数 , 打开项目resources目录下配置文件application.properties , 在其中添加以下参数:
Spring Boot 文件上传与下载的示例代码

文章插图
其中file.upload-dir=./uploads参数为自定义的参数 , 创建FileProperties.javaPOJO类 , 使配置参数可以自动绑定到POJO类 。
Spring Boot 文件上传与下载的示例代码

文章插图
然后在@SpringBootApplication注解的类中添加@EnableConfigurationProperties注解以开启ConfigurationProperties功能 。
SpringBootFileApplication.java
Spring Boot 文件上传与下载的示例代码

文章插图
配置完成 , 以后若有file前缀开头的参数需要配置 , 可直接在application.properties配置文件中配置并更新FileProperties.java即可 。
另外再创建一个上传文件成功之后的Response响应实体类UploadFileResponse.java及异常类FileException.java来处理异常信息 。
UploadFileResponse.java
Spring Boot 文件上传与下载的示例代码

文章插图
FileException.java
Spring Boot 文件上传与下载的示例代码

文章插图
创建接口
下面需要创建文件上传下载所需的 REST APIs 接口 。创建文件FileController.java 。
Spring Boot 文件上传与下载的示例代码

文章插图

Spring Boot 文件上传与下载的示例代码

文章插图
FileController类在接收到用户的请求后 , 使用FileService类提供的storeFile()方法将文件写入到系统中进行存储 , 其存储目录就是之前在application.properties配置文件中的file.upload-dir参数的值./uploads 。
下载接口downloadFile()在接收到用户请求之后 , 使用FileService类提供的loadFileAsResource()方法获取存储在系统中文件并返回文件供用户下载 。
FileService.java
Spring Boot 文件上传与下载的示例代码

文章插图

Spring Boot 文件上传与下载的示例代码

文章插图
接口测试
在完成上述的代码之后 , 打开SpringBootFileApplication.java并运行 , 运行完成之后就可以使用 Postman 进行测试了 。

推荐阅读