跳到主要内容
版本:2.0.x

MinIO存储

MinIO存储是开源的私有云对象存储服务,基于S3兼容API实现海量非结构化数据的高性能存储管理。它负责文件上传、下载、删除和签名URL生成,支持分布式部署和数据分片,适合需要数据本地化管理的企业私有云环境。

MinIO存储元素分层结构为Meta(storages.Meta) → Type(storages.MinioType) → 实例,开发者可通过JitAI的可视化开发工具快捷地创建MinIO存储实例元素。

当然,开发者也可以创建自己的Type元素,或者在自己的App中改写JitAI官方提供的storages.MinioType元素,以实现自己的封装。

快速开始​

创建实例元素​

目录结构​

推荐目录结构
storages/
└── MyMinioStorage/ # 存储元素名称(可自定义)
├── e.json # 元素配置文件
└── MyMinioStorage.json # 业务配置文件(与目录名同名)

e.json文件​

e.json配置示例
{
"title": "我的MinIO存储",
"type": "storages.MinioType",
"backendBundleEntry": ".",
"variables": []
}

业务配置文件​

MyMinioStorage.json配置示例
{
"accessKeyId": "your-access-key",
"accessKeySecret": "your-secret-key",
"scheme": "https",
"endPoint": "minio.example.com:9000",
"bucketName": "my-bucket"
}

调用示例​

基本使用示例
# 获取MinIO存储实例
storage = app.getElement("storages.MyMinioStorage")

# 上传文件
with open("test.txt", "rb") as file:
result = storage.uploadByFile("test.txt", file.read(), "text/plain")
print(f"上传成功,URL: {result['url']}")

# 下载文件
file_data = storage.download("test.txt")

# 删除文件
storage.delete("test.txt")

元素配置​

e.json配置​

属性名类型必填说明
titlestring是存储元素显示名称
typestring是固定值:storages.MinioType
backendBundleEntrystring是固定值:"."
variablesarray否扩展变量配置,通常为空数组

业务配置文件配置​

参数名类型必填说明
accessKeyIdstring是MinIO访问密钥ID
accessKeySecretstring是MinIO访问密钥Secret
endPointstring是MinIO服务器地址和端口
bucketNamestring是存储桶名称
schemestring否协议类型,默认"http",可选"https"

方法​

uploadByFile​

上传文件到MinIO存储。

参数详解​

参数名类型对应原生类型必填说明
nameStextstr是文件名称
data-bytes是文件二进制数据
contentTypeStextstr否文件MIME类型,默认"application/octet-stream"

返回值​

返回包含上传结果的字典,格式:{"url": "文件访问URL"}

使用示例​

文件上传示例
storage = app.getElement("storages.MyMinioStorage")

# 上传文本文件
with open("document.txt", "rb") as file:
result = storage.uploadByFile(
name="document.txt",
data=file.read(),
contentType="text/plain"
)
print(f"文件URL: {result['url']}")

# 上传图片文件
with open("image.jpg", "rb") as file:
result = storage.uploadByFile(
name="image.jpg",
data=file.read(),
contentType="image/jpeg"
)

download​

从MinIO存储下载文件。

参数详解​

参数名类型对应原生类型必填说明
nameStextstr是要下载的文件名称

返回值​

返回文件的二进制数据

使用示例​

文件下载示例
storage = app.getElement("storages.MyMinioStorage")

# 下载文件
file_data = storage.download("document.txt")

# 保存到本地
with open("downloaded_document.txt", "wb") as file:
file.write(file_data)

delete​

删除MinIO存储中的文件。

参数详解​

参数名类型对应原生类型必填说明
nameStextstr是要删除的文件名称

返回值​

删除操作的结果信息

使用示例​

文件删除示例
storage = app.getElement("storages.MyMinioStorage")

# 删除文件
result = storage.delete("document.txt")
print("文件删除成功")

getSignUrl​

生成文件的预签名上传URL。

参数详解​

参数名类型对应原生类型必填说明
fileStextstr是文件名称
contentTypeStextstr是文件MIME类型
expiresNumericint否签名过期时间(秒),默认300秒

返回值​

返回包含预签名URL和内容类型的字典

使用示例​

预签名URL生成示例
storage = app.getElement("storages.MyMinioStorage")

# 生成预签名URL
sign_result = storage.getSignUrl(
file="upload.pdf",
contentType="application/pdf",
expires=600 # 10分钟过期
)
print(f"预签名URL: {sign_result['url']}")

getObject​

获取MinIO存储中的文件对象。

参数详解​

参数名类型对应原生类型必填说明
nameStextstr是文件名称

返回值​

返回文件对象

使用示例​

获取文件对象示例
storage = app.getElement("storages.MyMinioStorage")

# 获取文件对象
file_obj = storage.getObject("document.txt")

属性​

config​

存储配置信息,包含accessKeyId、accessKeySecret、endPoint、bucketName、scheme等配置参数。

name​

存储实例的fullName标识。

client​

MinIO客户端实例,用于与MinIO服务器通信。

SIGN_EXPIRES​

默认签名过期时间,值为300秒。

高级特性​

环境变量支持​

MinIO存储支持在配置文件中使用环境变量,实现不同环境的配置隔离:

环境变量配置示例
{
"accessKeyId": "${MINIO_ACCESS_KEY}",
"accessKeySecret": "${MINIO_SECRET_KEY}",
"scheme": "${MINIO_SCHEME:-https}",
"endPoint": "${MINIO_ENDPOINT}",
"bucketName": "${MINIO_BUCKET}"
}

异常处理​

MinIO存储提供专门的异常处理机制,自动处理HTTP错误和存储操作异常:

异常处理示例
storage = app.getElement("storages.MyMinioStorage")

try:
result = storage.uploadByFile("test.txt", data, "text/plain")
except Exception as e:
# 自动处理404文件不存在、网络错误等异常
print(f"存储操作失败: {e}")

批量文件操作​

批量操作示例
storage = app.getElement("storages.MyMinioStorage")

# 批量上传文件
files = ["file1.txt", "file2.txt", "file3.txt"]
for filename in files:
with open(filename, "rb") as file:
storage.uploadByFile(filename, file.read(), "text/plain")

# 批量删除文件
for filename in files:
storage.delete(filename)