个人网站:IT知识小屋 版权:本文由【IT学习日记】原创、在CSDN首发、需要转载请联系博主 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦文章目录简介特性项目架构核心功能功能截图快速使用开源地址使用手册写在最后简介MinIO-Plus是一款开源免费的MinIO的二次封装与增强工具旨在对MinIO进行功能拓展解决对象存储在大文件分片上传、断点续传、缩略图生成、访问权限控制等场景的难题。MinIO-Plus在MinIO的基础上只做增强不侵入MinIO代码只提供更简单的使用方式。特性无侵入只做增强不做改变引入 minio-plus 不会对现有工程产生影响。文件秒传对每个上传的文件进行哈希摘要识别用户上传同一个文件时没有文件实际传输过程做到秒传。并发上传将文件切分为小块。同时并发上传多个小块最大限度地利用带宽加快上传速度。断点续传在传输过程中遇到问题导致传输失败只需重新传输未完成的小块而不需要重新开始整个传输任务。缩略图生成识别文件类型在图片上传时自动生成缩略图缩略图大小可配置。自动桶策略按照文档、压缩包、音频、视频、图片等类型自动建桶按照 /年/月 划分路径避免受到操作系统文件目录体系影响导致性能下降。访问权限控制可支持基于用户、组的文件权限控制保证重要文件的安全性。访问链接时效基于 MinIO 的临时链接创建策略提供具备有效期并预签名的上传与下载地址。客户端直连前端直连 MinIO 项目工程不做文件流的搬运在支持以上特性的情况下提供 MinIO 原生性能。极佳的兼容性JDK 从 1.8 至 17并同时支持 SpringBoot2 和 SpringBoot3。项目架构模块架构图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依赖层次图┌───────────────────────────────────────────┐ │ Spring Boot Starters │ │ ┌─────────────────────────────────────┐ │ │ │ minio-plus-extension │ │ │ └─────────────────────────────────────┘ │ └───────────────────────────────────────────┘ │ ▼ ┌───────────────────────────────────────────┐ │ minio-plus-core │ └───────────────────────────────────────────┘ │ ▼ ┌───────────────────────────────────────────┐ │ ┌─────────────────┐ ┌──────────────────┐ │ │ │ minio-plus-api │ │ s3-api-definition│ │ │ └─────────────────┘ └──────────────────┘ │ └───────────────────────────────────────────┘ │ ▼ ┌───────────────────────────────────────────┐ │ minio-plus-common │ └───────────────────────────────────────────┘核心功能上传当用户重复上传相同的文件时每次都需要执行一次完整的文件上传操作这造成了文件上传过程的冗余即浪费了用户的时间和服务器的网络IO重复文件又占用了不必要的服务器磁盘空间。针对以上两个问题minio-plus支持文件秒传特性解决了传统文件上传中重复文件上传时的问题提高了文件传输的效率和用户体验同时减少了文件服务器的存储空间占用。实现文件秒传的技术问题主要涉及文件唯一标识的生成和文件重复性检测。文件唯一标识生成在浏览器端使用MD5哈希算法对待传输文件进行哈希值编码。编码结果为一字符串作为文件的唯一标识。文件重复性检测在服务器端根据接收到的文件唯一标识在数据库中进行搜索。如果在数据库中找到相同的文件唯一标识那么判断该文件存在且无需再进行文件传输。分片上传分片上传是一种将大文件划分为多个片段并发或按序上传的技术。它有以下几个好处提高传输速度当上传的文件比较大时将大文件进行分块同时并发上传多个小块而不是一整个大文件按顺序上传。这样可以最大限度地利用带宽从而加快上传速度。支持断点续传分块上传是断点续传技术的前置条件要想实现断点续传必须先支持分块。断点续传断点续传依赖于分片技术是提高可用性的重要手段优点如下节省时间、减少网络IO、减少磁盘IO在文件传输过程中遇到问题导致传输失败时只需重新传输未完成的分片而不需要重新开始整个传输任务。增加传输的可靠性可以避免由于网络波动或其他原因导致整个文件需要重新传输的情况。再也不怕意外断网。在大文件传输时尤其有用。随时暂停和恢复用户可以在传输过程中暂停传输或者中断传输断点续传可以方便地恢复传输任务。下载浏览器向服务端发起文件读取请求服务端会根据fileKey入参取得文件的元数据信息。获取文件元数据信息后根据元数据信息中的是否私有字段和所有者字段判断是否具备文件读取权限。当用户具备读取权限时服务端请求MinIO服务器获取经过预签名的文件访问地址返回给浏览器。当用户不具备读取权限时返回给浏览器无访问权限提示信息。浏览器拿到真实文件地址后读取文件并显示或下载。缩略图在用户第一次访问图片预览接口时自动生成缩略图压缩时比例按照图片原始比例不做变化使用相同的md5名称存入缩略图桶中。缩略图默认按照宽度300像素进行等比例压缩功能截图基础用法文件权限通过传递 authorization 和 isPrivate 控制文件上传、下载的权限。监听文件上传过程文件上传过程中通过回调函数可以监听文件上传过程。快速使用开发环境要求Java: JDK 8 或更高版本 Maven: 3.6.0 或更高版本 Git: 用于代码版本控制 操作系统: Windows、Linux 或 macOS构建项目1、下载项目源码获取方式在文后 2、解压 ZIP 文件 unzip minio-plus-v1.0.x.zip cd minio-plus-v1.0.x 3、或解压 TAR.GZ 文件 tar -xzf minio-plus-v1.0.x.tar.gz cd minio-plus-v1.0.x开源地址使用手册点击下方的【IT学习日记】回复【资源】领取如果这篇文章对您有帮助请一定帮我点个“关注”和“点赞”,这对我非常重要。我将会继续推荐更多优质项目和新闻。写在最后1000优质开源项目更新进度257/1000。如需更多类型优质项目推荐请在文章后留言。