前言
基于Minio,使用Spring Boot搭建文件微服务;代码地址
开发环境
JDK 1.8SpringBoot 2.5.3MySQL 8Minio
说明
-
执行
file_server.sql初始数据库及表 -
执行
docker-compose.yml启动Minio服务 -
启动程序,访问http://localhost:9090/swagger-ui/ 查看已实现接口
-
配置
# 主要配置说明
# minio
minio:
# Minio 服务地址,账号密码
endpoint: http://localhost:9000
user: minio
password: minio123
bucket: ${spring.application.name:default}
# 单位秒,预签url有效期(默认一天)
expire: 86400
# 下载相关
download:
# 对外访问的url是否使用Minio预签url,否使用 host+api拼接地址
presigned: true
# java服务访问地址
host: http://localhost:9090
# 下载文件的api接口,须与Controller定义的下载url相同;若不同自行代理转发处理
api: files/download
-
预签上传
直接往
Minio服务器上传文件,避免中转,提高上传速度- 前端先
POST请求/files/presigned,生成一个给HTTP PUT请求用的presigned URL。前端可以用这个URL进行上传 - 前端通过
PUT请求预签url上传文件 - 最后
POST请求/files/finished上传完毕
- 前端先
-
@FillFiles注解配合
FillFileSerializer序列化器,自动填充业务id对应文件列表public class FillFilesTestVO implements Serializable { private String bizId; @FillFiles("bizId") @JsonSerialize(nullsUsing = FillFileSerializer.class) private List<UploadedFileVO> files; }