Expand description
§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};
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?;启用 real-cloud 后,StorageBuilder::build() 自动构造真实云客户端;
未配置凭据时返回 StorageError::InvalidConfig,不会静默降级为 Mock。
§主要模块
Re-exports§
pub use advanced::estimate_remaining_seconds;pub use advanced::format_size;pub use advanced::object_age_days;pub use advanced::BucketLifecycle;pub use advanced::CdnRefresher;pub use advanced::LifecycleAction;pub use advanced::LifecycleEvaluationResult;pub use advanced::LifecycleRule;pub use advanced::MultipartUpload;pub use advanced::MultipartUploadSnapshot;pub use advanced::Part;pub use advanced::RefreshRequest;pub use advanced::RefreshStatus;pub use advanced::RefreshType;pub use advanced::ResumableUploadManager;pub use advanced::UploadStatus;pub use error::StorageError;pub use storage::StorageBuilder;pub use storage::StorageConfig;pub use storage::StorageProvider;pub use storage::StorageWrapper;pub use aliyun::AliyunOssStorage;pub use huawei::HuaweiObsStorage;pub use local::LocalStorage;pub use qiniu::QiniuKodoStorage;pub use s3::S3Storage;pub use tencent::TencentCosStorage;pub use upyun::UpYunStorage;pub use storage::*;