谁没有在文件存储和上传功能上踩过坑呢?大文件上传超时、重复传输浪费带宽、不同环境下的兼容性问题、繁琐的权限控制配置……每次对接MinIO可能都要编写一堆重复的样板代码,确实令人头疼。
现在,有了 MinIO-Plus!它就像是MinIO的“黄金搭档”,采用无侵入式的设计,专注于为MinIO提供功能增强与优化,帮你解决上述烦恼。
🌟 什么是MinIO-Plus?
MinIO-Plus是一款开源且免费的MinIO二次封装与增强工具。它旨在拓展MinIO的功能,解决对象存储在大文件分片上传、断点续传、缩略图生成、访问权限控制等场景下的常见难题,核心目标是简化开发、提高效率。
✅ 采用 Apache License 2.0 开源协议
✅ 100%免费并可商用,无任何隐形费用
模块结构图
minio-plus-parent
├── minio-plus-common # 公共模块
├── minio-plus-api # API 接口定义
├── minio-plus-core # 核心实现
├── minio-plus-extension # 扩展功能
├── minio-plus-s3-api # S3 API 适配
│ ├── s3-api-definition # S3 API 定义
│ └── s3-api-minio # MinIO S3 实现
└── minio-plus-spring-boot-starter # Spring Boot 集成
├── minio-plus-core-springboot-starter # 核心功能 SpringBoot3 Starter
├── minio-plus-core-springboot2-starter # 核心功能 SpringBoot2 Starter
├── minio-plus-all-springboot-starter # 完整功能 SpringBoot3 Starter
└── minio-plus-all-springboot2-starter # 完整功能 SpringBoot2 Starter
🚀 核心特性
MinIO-Plus的特性非常贴合项目实战需求,每一个都针对常见痛点:
1. 无侵入集成,零成本接入
是否担心引入新工具会影响现有工程?MinIO-Plus的设计原则就是只做增强,不改变原生MinIO的行为与接口,实现平滑接入。
2. 秒传+断点续传,提升用户体验
- 秒传:自动为上传文件计算哈希摘要进行唯一性识别。当用户再次上传相同文件时,系统会直接返回已存在的文件链接,没有实际的文件传输过程,实现“秒级”完成,极大节省服务器带宽。
- 断点续传:在上传过程中遇到网络等问题导致传输失败时,只需重新传输未完成的部分文件块即可,无需从头开始整个任务,让大文件上传不再令人焦虑。
3. 并发上传,最大化带宽利用率
工具会自动将大文件切分为若干小块,并支持并发上传多个部分。这能充分利用可用带宽资源,显著提升大文件的上传速度。
4. 自动生成缩略图,省去额外开发
当上传图片文件时,MinIO-Plus会自动识别文件类型,并一键生成可配置大小的缩略图。开发者无需再自行编写或集成复杂的图像处理逻辑。
5. 智能桶策略,文件管理更清晰
支持按照文档、压缩包、音频、视频、图片等文件类型自动创建存储桶(Bucket)并进行路径规划。这有助于摆脱传统操作系统文件目录体系的性能限制,使海量文件管理并然有序。
6. 精细化权限控制,保障数据安全
提供基于用户和用户组的文件权限管理功能。可以对重要文件设置细粒度的访问权限,配置过程简单直观,有效防止数据泄露。
7. 访问链接时效控制,灵活安全
基于MinIO的预签名URL机制,能够生成带有效期的上传或下载地址。链接过期后自动失效,在满足业务灵活性的同时确保了安全性。
8. 客户端直连,性能无损
前端应用可以直接对接MinIO服务端,项目后端工程无需承担文件流的搬运工作。在享受所有增强功能的同时,还能完全保持MinIO原生的高性能特性。
9. 广泛兼容,适配多环境
支持 JDK 8 及以上版本,并兼容 Spring Boot 2 和 Spring Boot 3 框架。
🛠️ 快速集成指南
引入依赖
对于 Spring Boot 2 项目:
<!-- Maven示例 -->
<dependencies>
<dependency>
<groupId>me.liuxp</groupId>
<artifactId>minio-plus-all-springboot2-starter</artifactId>
<version>1.0.5</version>
</dependency>
<dependency>
<groupId>me.liuxp</groupId>
<artifactId>s3-api-minio</artifactId>
<version>1.0.5</version>
</dependency>
</dependencies>
对于 Spring Boot 3 项目:
<!-- Maven示例 -->
<dependencies>
<dependency>
<groupId>me.liuxp</groupId>
<artifactId>minio-plus-all-spring-boot-starter</artifactId>
<version>1.0.5</version>
</dependency>
<dependency>
<groupId>me.liuxp</groupId>
<artifactId>s3-api-minio</artifactId>
<version>1.0.5</version>
</dependency>
</dependencies>
💡 提示:你也可以选择引入 minio-plus-core-springboot-starter(仅包含 Service 层接口,不包含 Controller)。
<dependencys>
<dependency>
<groupId>me.liuxp</groupId>
<artifactId>minio-plus-core-springboot-starter</artifactId>
<version>1.0.5</version>
</dependency>
<dependency>
<groupId>me.liuxp</groupId>
<artifactId>s3-api-minio</artifactId>
<version>1.0.5</version>
</dependency>
</dependencys>
配置信息
在 application.yml 或 application.properties 中配置MinIO连接信息及相关参数:
##################################################################
### MinIO Plus Config
##################################################################
minioplus:
# MinIO 部署地址
backend: http://localhost:9000
# 授权key
key: minioadmin
# 密钥
secret: minioadmin
part:
size: 10485760 # 分片大小设置为 10MB
thumbnail:
size: 500 # 缩略图宽度 500px
(项目官网:https://minioplus.liuxp.me)

💡 总结
MinIO-Plus 在 MinIO 强大且灵活的对象存储能力之上,做了恰到好处的增强,精准解决了项目开发中遇到的实际痛点。如果你正在使用或考虑使用 MinIO 作为项目的文件存储方案,那么这个增强工具绝对值得一试。作为一款优秀的开源项目,它也欢迎社区的反馈与贡献。
希望本文的介绍能帮助你更高效地处理文件存储需求。如果想了解更多实用的开发者工具与技术实践,欢迎来到 云栈社区 交流探讨。