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

2024-06-24 11:01:36阅读量:38 字体:

文件的上传及下载功能是开发人员在日常应用及编程开发中经常会遇到的。正好最近开发需要用到此功能,虽然本人是 Android 开发人员,但还是业余客串了一下后台开发。

在本文中,您将学习如何使用 Spring Boot 实现 Web 服务中的文件上传和下载功能。首先会构建一个 REST APIs 实现上传及下载的功能,然后使用 Postman 工具来测试这些接口,最后创建一个 Web 界面使用 JavaScript 调用接口演示完整的功能。最终界面及功能如下:

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

项目环境

项目创建

开发环境为 Intellij IDEA,项目创建很简单,按照下面的步骤创建即可:

File -> New -> Project...

选择 Spring Initializr,点击 Next

填写 Group (项目域名) 和 Artifact (项目别名)

构建类型可以选择 Maven 或 Gradle, 看个人习惯

添加 Web 依赖

输入项目名称及保存路径,完成创建

项目创建完毕之后就可以进行开发,项目的完整结构如下图所示:

参数配置

项目创建完成之后,需要设置一些必要的参数,打开项目resources目录下配置文件application.properties,在其中添加以下参数:

其中file.upload-dir=./uploads参数为自定义的参数,创建FileProperties.javaPOJO类,使配置参数可以自动绑定到POJO类。

然后在@SpringBootApplication注解的类中添加@EnableConfigurationProperties注解以开启ConfigurationProperties功能。

SpringBootFileApplication.java

配置完成,以后若有file前缀开头的参数需要配置,可直接在application.properties配置文件中配置并更新FileProperties.java即可。

另外再创建一个上传文件成功之后的Response响应实体类UploadFileResponse.java及异常类FileException.java来处理异常信息。

UploadFileResponse.java

FileException.java

创建接口

下面需要创建文件上传下载所需的 REST APIs 接口。创建文件FileController.java。

FileController类在接收到用户的请求后,使用FileService类提供的storeFile()方法将文件写入到系统中进行存储,其存储目录就是之前在application.properties配置文件中的file.upload-dir参数的值./uploads。

下载接口downloadFile()在接收到用户请求之后,使用FileService类提供的loadFileAsResource()方法获取存储在系统中文件并返回文件供用户下载。

FileService.java

接口测试

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

单个文件上传结果:

多个文件上传结果:

文件下载结果:

Web 前端开发

index.html

main.css

main.js


总结

至此,文件的上传及下载功能已完成。在正式环境中可能还需要将上传的文件存储到数据库,此处按照实际需求去处理即可。

推荐阅读

  • 微信闭关中是什么状态

    微信闭关中是什么状态

    微信闭关中是不与外界往来的状态。微信状态显示闭关,可能是因为最近比较忙,又或者是碰到烦心的事情,有一种自我封闭的含义。以下是设置微信状态的操作方法: 微信闭关中是什么状态 1、打开微信,点击我&rdq...

    阅读: 871

  • qq打开文件默认设置怎么改

    qq打开文件默认设置怎么改

    qq,为腾讯qq的简称,是一款基于互联网的即时通信软件。修改qq打开文件默认设置的具体操作如下: qq打开文件默认设置怎么改 1、点击手机设置”-应用与权限”-应用管理&rdq...

    阅读: 839

  • 微信注销后聊天记录还能恢复吗

    微信注销后聊天记录还能恢复吗

    如果对聊天记录进行备份或迁移的话,微信注销后聊天记录可以恢复。如果没有对聊天记录进行备份或迁移的话,微信注销后聊天记录无法恢复。以下是注销微信的操作步骤: 微信注销后聊天记录还能恢复吗 1、打开微信A...

    阅读: 950

  • 微信群太多怎么实现分组管理

    微信群太多怎么实现分组管理

    微信群太多可以使用折叠群的功能进行分组管理,将群设置为折叠群的具体操作步骤如下: 微信群太多怎么实现分组管理 1、打开微信app,点击下方的通讯录,再点击群聊进入群聊界面。 2、进入群聊界面后,选择...

    阅读: 898

  • 微信预约挂号怎样切换就诊人

    微信预约挂号怎样切换就诊人

    以梧州市中医院公众号为例,在梧州市中医院微信公众号预约挂号切换就诊人的具体操作步骤如下: 微信预约挂号怎样切换就诊人 1、打开微信APP,搜索梧州市中医院公众号”,点击该公众号,再点击发消...

    阅读: 845

  • 快手别人怎么关注不了我

    快手别人怎么关注不了我

    如果别人关注不了你的快手账号的话,可能是你开启了隐私用户”,关闭隐私账户”的具体操作方式如下: 快手别人怎么关注不了我 1、打开快手,点击左上角的三条横线”,进入功...

    阅读: 876