SZ-ORM Storage — 对象存储
提供统一的对象存储抽象,支持 S3、阿里云 OSS、七牛 Kodo、华为 OBS、
腾讯 COS、又拍云以及本地文件系统,可通过 StorageBuilder 配置多 provider。
生产可用性说明
本 crate 中各 provider 的生产可用性分级如下:
| Provider | 模块 | 状态 |
|---|---|---|
| Local(本地文件系统) | [local] |
✅ 生产可用 |
| S3(AWS S3 兼容) | s3_sdk 模块(feature = "s3-sdk") |
✅ 生产可用(基于 rust-s3 crate) |
| Aliyun OSS | real(feature = "real-cloud") |
✅ 生产可用(基于 OpenDAL) |
| Tencent COS | real(feature = "real-cloud") |
✅ 生产可用(基于 OpenDAL) |
| Huawei OBS | real(feature = "real-cloud") |
✅ 生产可用(基于 OpenDAL) |
| UpYun | real(feature = "real-cloud") |
✅ 生产可用(基于 OpenDAL) |
| Qiniu Kodo | real(feature = "real-cloud") |
✅ 生产可用(官方 REST API + HMAC-SHA1) |
| 以上云(未启用 feature) | [aliyun] [tencent] [qiniu] [huawei] [upyun] [s3] |
⚠️ MOCK-ONLY(内存 HashMap) |
使用真实云存储
[]
= { = "1.2", = ["real-cloud"] }
use sz_orm_storage::{Storage, StorageBuilder, StorageProvider};
# async fn demo() -> Result<(), sz_orm_storage::StorageError> {
let storage = StorageBuilder::new(StorageProvider::AliyunOss(Default::default()))
.with_bucket("my-bucket")
.with_endpoint("oss-cn-hangzhou.aliyuncs.com")
.with_access_key("AK...")
.with_secret_key("SK...")
.build()?;
let url = storage.put("a.txt", b"data", "text/plain").await?;
# Ok(())
# }
启用 real-cloud 后,StorageBuilder::build() 自动构造真实云客户端;
未配置凭据时返回 StorageError::InvalidConfig,不会静默降级为 Mock。
主要模块
- [
storage] — 统一 trait 与构建器 real— 真实云存储(feature = "real-cloud")- [
s3] / [aliyun] / [huawei] / [tencent] / [qiniu] / [upyun] / [local] — 各 provider 实现