同步操作将从 码匠君/dante-oss 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
让 Minio 的集成和使用更简单
Dante OSS 是一款简化Minio操作的开源框架。通过对原有 Minio Java SDK 的深度封装,简化 Minio API 使用复杂度,提升 Minio 使用的便捷性,降低 Minio 应用开发门槛。
MinIO 是一款高性能、分布式的对象存储系统。Minio这款开源的分布式对象存储服务在国外已经相当受欢迎,并且国内也有多中小型互联网公司使用它来作为对象存储服务。虽然 Minio 相关的资料和示例在网络上已经非常丰富,但是为什么还要推出 Dante OSS 这样的项目?
Minio SDK | Dante OSS |
---|---|
仅包含基础操作API | 提供大量重载方法 |
必须用构造器创建参数对象 | 重载方法覆盖所有常见参数,按需传参即可 |
API全部混在同一个类中 | 根据差异、用途、场景拆分为不同的 Service,例如:getObject 和 downloadObject |
源于XML对象参数结构复杂 | 自定义实体和转换器简化参数结构 |
基础API会抛出大量 Exception,具体问题需要自己摸索对应 | 对所有错误进行标准化处理,提供更准确和交互友好的描述信息,可方便地与系统错误体系融合 |
Minio SDK | Dante OSS |
---|---|
复杂结构参数不利于JSON互转 | 采用最简化参数方便传输并可准确转换成对应Minio复杂对象参数 |
参数层次结构复杂 | 自定义请求参数实体保持继承结构的同时简化传递参数 |
参数多用途不明晰必须查阅源代码 | 使用 OpenAPI 注解详细说明各参数用途可使用 Swagger 查阅 |
参数校验规则细节多没有文档说明 | 对照 Minio 源代码,结合自定义实体,增加匹配的 Spring Validation 校验 |
不提供 REST API | 提供标准的 REST API 可直接使用 |
内容 | Minio SDK | Dante OSS |
---|---|---|
常规业务 | 独立方法需要自己按需组合 | 封装常规业务逻辑,可直接调用 REST API使用 |
设置管理 | 对于存储桶、对象的管理只能通过 Minio 服务器管理界面 | 对照 Minio 管理界面方式,将管理功能封装为 Service、REST API 以及 Vue 管理界面 |
文件直传 | 提供直传机制,直接暴露Minio服务器地址 | 增加超简化反向代理,在满足直传需求的前提下,很好的隐藏Minio 服务器以提升安全性 |
文件直传 | 直传接口无法与现有系统安全体系融合(无法鉴权) | 提供基于 Spring Authorization Server 的、完整的单体版和微服务版案例 |
大文件分片 | 内部机制无法直接使用 | 封装主流大文件分片方案,提供前后端使用案例 |
文件秒传 | 不支持 | 提供共用化秒传实现,可直接使用,支持多种数据库 |
Dante OSS |
---|
只要Minio API支持,对应的管理功能均会在标准的 Vue3 工程中实现 |
提供与后端一致 Typescript 声明文件,可以直接用于基于Typescript的前端开发 |
完整的、基于 Vue3、Vite4、Typescript5 的前端项目案例,可清晰的了解 Minio 前后端交互和使用,甚至直接使用 |
dante-oss
├── oss-bom -- 工程Maven顶级依赖,统一控制版本和依赖
├── oss-minio -- Minio 模块
├ ├── minio-core -- Minio 通用代码包
├ ├── minio-sdk-logic -- Minio 基础 API 模块
├ ├── minio-sdk-rest -- Minio 基础 REST API模块
├ ├── minio-sdk-scenario -- Minio 扩展及应用方案整合模块
├ └── minio-spring-boot-starter -- 仅包含 Minio 基础 API 和 REST API 的 Starter
└── oss-spring-boot-starter -- 完整的、包含所有内容的 Starter
功能 | 说明 |
---|---|
Bucket 列表 | Bucket 列表查询,包括 Service、REST API 和前端展示 |
Bucket 名称是否存在 | Bucket 名是否存在,包括 Service、REST API 和前端异步校验处理 |
Bucket 创建 | 创建 Bucket,包括 Service、REST API 和前端Validation校验处理 |
Bucket 删除 | 删除 Bucket,包括 Service、REST API 和前端展示处理 |
Bucket 加密设置获取 | 获取 Bucket Encryption 设置,包括 Service、REST API |
Bucket 修改加密设置 | 修改 Bucket Encryption 设置,包括 Service、REST API |
Bucket 删除加密设置 | 删除 Bucket Encryption 设置,包括 Service、REST API |
Bucket 访问策略设置获取 | 获取 Bucket Policy 设置,包括 Service、REST API |
Bucket 修改访问策略设置 | 修改 Bucket Policy 设置,包括 Service、REST API |
Bucket 删除访问策略设置 | 删除 Bucket Policy 设置,包括 Service、REST API |
Bucket 标签获取 | 获取 Bucket Tags,包括 Service、REST API |
Bucket 修改标签 | 修改 Bucket Tags,包括 Service、REST API |
Bucket 删除标签 | 删除 Bucket Tags,包括 Service、REST API |
Bucket 对象锁定设置获取 | 获取 Bucket ObjectLockConfiguration 设置,包括 Service、REST API |
Bucket 修改对象锁定设置 | 修改 Bucket ObjectLockConfiguration 设置,包括 Service、REST API |
Bucket 删除对象锁定设置 | 删除 Bucket ObjectLockConfiguration 设置,包括 Service、REST API |
Object 列表 | Object 列表查询,包括 Service、REST API 和前端展示 |
Object 删除 | 删除 Object,包括 Service、REST API 和前端展示处理 |
Object 批量删除 | 批量删除 Object,包括 Service、REST API 和前端展示处理 |
Object 元信息获取 | 获取 Object Stat,包括 Service、 |
Object 下载(服务端) | Object 下载(服务端下载,非流模式),包括 Service、 |
Object 标签获取 | 获取 Object Tags,包括 Service、REST API |
Object 修改标签 | 修改 Object Tags,包括 Service、REST API |
Object 删除标签 | 删除 Object Tags,包括 Service、REST API |
Object 获取保留设置 | 获取 Object Retention,包括 Service、REST API |
Object 修改保留设置 | 修改 Object Retention,包括 Service、REST API |
Object 开启持有设置 | 获取 Object LegalHold,包括 Service、REST API |
Object 关闭持有设置 | 修改 Object LegalHold,包括 Service、REST API |
其它功能 | 正逐步完善,主要涉及前后端交互、以及可用性验证和前端相关功能的开发,敬请期待,欢迎 PR |
功能 | 说明 |
---|---|
创建分片上传请求 | 创建分片上传请求,返回 Minio UploadId |
创建文件预上传地址 | 根据 UploadId 和 指定的分片数量,返回数量像匹配的 Minio 与上传地址 |
获取所有分片文件 | 获取指定 uploadId 下所有的分片文件 |
创建大文件分片上传 | 统一的创建大文件分片上传业务逻辑封装,减少前后端反复交互, 包括 Service、REST API |
合并已经上传完成的分片 | 根据 UploadId 合并已经上传完成的分片,完成大文件分片上传 包括 Service、REST API |
统一常量接口 | 将涉及的 Enums、常量以统一接口的方式返回给前端,方便展示使用, 包括 Service、REST API 和前端展示 |
Minio Client 对象池 | 实现 Minio Client 对象池,减少 Minio Client 的反复创建和销毁,提升访问 Minio Server性能 |
Bucket 设置 | 统一 Bucket 设置: Bucket 标签设置、访问策略、加密方式、对象锁定等, 包括 Service、REST API 和前端展示 |
Object 设置 | 统一 Object 设置: Bucket 标签设置, 包括 Service、REST API 和前端展示 |
Object 下载(流模式) | Minio 对象下载,采用流模式支持vue前端post方式下载, 包括 Service、REST API 和前端展示 |
超轻量级反向代理 | 实现轻量级反向代理解决 PresignedObjectUrl 方式直接向前端暴露 Minio Server地址问题 |
功能 | 说明 |
---|---|
OpenAPI 支持 | 在支持 Open API 环境下,显示 Swagger 文档,建议使用 Springdoc |
与 Spring Authorization Server 体系集成 | 提供完整的与 Spring Authorization Server 集成,实现认证、授权、鉴权、动态权限等完整案例,包括单体版和微服务版 |
大文件分片上传 | 采用 PresignedObjectUrl 方案的大文件分片上传。扩展 Minio Client,封装相应的 Service、REST API |
vue-simple-uploader | 前端基于 vue-simple-uploader 组件,配合自定义 REST API 实现大文件分片上传 |
<dependency>
<groupId>cn.herodotus.oss</groupId>
<artifactId>oss-spring-boot-starter</artifactId>
<version>最新版本</version>
</dependency>
herodotus:
oss:
minio:
endpoint: http://127.0.0.1:9000
access-key: xxxxxx
secret-key: xxxxxx
结合实际需求配置数据源
// 参考代码
public static Result<String> resolveException(Exception ex, String path) {
return GlobalExceptionHandler.resolveException(ex, path);
}
// 或者
@ExceptionHandler({HerodotusException.class, PlatformException.class})
public static Result<String> exception(Exception ex, HttpServletRequest request, HttpServletResponse response) {
······
}
// 在系统统一错误处,调用以下代码即可返回包含自定义错误码的、更具交互性错误信息。
if (ex instanceof HerodotusException exception) {
Result<String> result = exception.getResult();
result.path(path);
log.error("[Herodotus] |- Global Exception Handler, Error is : {}", result);
return result;
}
除了 minio-core
模块以外,其它所有模块均可以单独使用。可以根据自身需要,仅选择某个模块进行使用。
@EnableHerodotusMinioLogic
可开启相关内容。@EnableHerodotusMinioRest
可开启相关内容。minio-sdk-rest
内容。使用注解 @EnableHerodotusMinioScenario
可开启相关内容。minio-sdk-logic
和 minio-sdk-rest
两部分内容,可直接引入使用。Dante OSS 作为 Dante Cloud 生态产品,不在单独提供演示环境和示例,请直接使用 Dante 环境查看效果和了解使用,这样也更贴近实际。
注意:如果您仅是想了解基本的使用方式和使用效果,建议使用单体架构演示环境。具体搭建方式参见【在线文档】中,单体版章节。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。