sz-orm-storage 2.0.0

SZ-ORM Storage Extension - real cloud providers via OpenDAL (real-cloud feature) + S3 real impl (s3-sdk feature) + in-memory mock providers
Documentation

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)

使用真实云存储

[dependencies]
sz-orm-storage = { version = "1.2", features = ["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 实现