/file-server

基于Minio的文件微服务

Primary LanguageJava

前言

基于Minio,使用Spring Boot搭建文件微服务

开发环境

  • JDK 1.8
  • SpringBoot 2.5.3
  • MySQL 8
  • Minio

说明

  • 执行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;
    }

接口实现