MinIO-Plus 是一个 MinIO 的二次封装与增强工具,在 MinIO 的基础上只做增强,不侵入 MinIO 代码,只为简化开发、提高效率而生。成为 MinIO 在项目中落地的润滑剂。
特性
- 无侵入 :只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑。
- 文件秒传 :对每个上传的文件进行哈希摘要识别,用户上传同一个文件时,没有文件实际传输过程,做到秒传。
- 并发上传 :将文件切分为小块。同时并发上传多个小块,最大限度地利用带宽,加快上传速度。
- 断点续传 :在传输过程中遇到问题导致传输失败,只需重新传输未完成的小块,而不需要重新开始整个传输任务。
- 缩略图生成 :识别文件类型,在图片上传时自动生成缩略图,缩略图大小可配置。
- 自动桶策略 :按照文档、压缩包、音频、视频、图片等类型自动建桶,按照
/年/月
划分路径,避免受到操作系统文件目录体系影响导致性能下降。 - 访问权限控制 :可支持基于用户、组的文件权限控制,保证重要文件的安全性。
- 访问链接时效 :基于 MinIO 的临时链接创建策略,提供具备有效期并预签名的上传与下载地址。
- 前端直连 :前端直连 MinIO ,项目工程不做文件流的搬运,在支持以上特性的情况下提供 MinIO 原生性能。
- 极佳的兼容性 :JDK 从 1.8 至 17+,并同时支持 SpringBoot2 和 SpringBoot3。
快速开始
minio-plus 是一个 Java 语言的 SDK ,通过 jar 包的形式发布到 Maven 中央仓库。
我们假设您已经具备已下知识:
- 熟练使用 Java 相关 IDE ,具备 Java 开发环境
- 熟练使用 Spring Boot 框架
- 熟悉 Maven,或者是 Gradle 也行
添加依赖
引入 MinIO Plus Starter 依赖
<dependencys> <dependency> <groupId>me.liuxp</groupId> <artifactId>minio-plus-all-springboot-starter</artifactId> <version>1.0.0</version> </dependency> <dependency> <groupId>me.liuxp</groupId> <artifactId>s3-api-minio</artifactId> <version>1.0.0</version> </dependency> </dependencys>
配置参数
在application.yml
配置文件中,添加 MinIO Plus 相关配置项:
##################################################################
### MinIO Plus Config
##################################################################
minioplus:
# MinIO 部署地址
backend: http://localhost:9000
# 授权key
key: minioadmin
# 密钥
secret: minioadmin
文件元数据读写实现
实现 MetadataRepository 接口类来保存文件元数据。
登录用户信息写入
MinIO Plus 提供的文件权限功能,依赖于用户登录信息。
需要在请求拦截器中调用UserHolder.set(userId)方法插入用户编号,游客访问时可以放入空字符串。
示例代码
可以查看项目仓库中 /minio-plus-application/minio-plus-application-springboot3 路径。 这是一个写好的,使用了
minio-plus-all-springboot-starter
和MySQL的例子。
仓库
版权
本项目基于 Apache License 2.0 开源协议,可用于商业项目。
评论