简洁易用的阿里云 OSS (Object Storage Service) 操作库,提供基本的文件操作和签名 URL 功能。
- 统一接口: 定义了OSS客户端的基本操作接口
- 多态支持: 支持私有bucket和公有bucket客户端的统一使用
- 代码复用: 减少重复代码,提高维护性
- 文件操作: 上传、下载、删除文件
- 签名URL: 生成带过期时间的上传/下载签名URL
- 文件管理: 检查文件存在性、生成唯一对象键
- 连接测试: 测试OSS连接状态
- 公开访问: 生成无需签名的公开下载/访问URL
- 批量操作: 批量生成公开URL
- 文件操作: 上传、下载、删除文件(使用公有bucket)
- 签名URL: 生成上传签名URL(使用公有bucket)
- 文件管理: 检查文件存在性、生成唯一对象键
- 连接测试: 测试公有bucket连接状态
- 元信息获取: 获取文件元信息(通过HTTP HEAD请求)
在你的 Cargo.toml 中添加依赖:
[dependencies]
oss-client = { path = "../oss-client" } # 如果在同一个 workspace 中
# 或者
oss-client = "0.1.0" # 如果发布到 crates.ioexport OSS_ACCESS_KEY_ID="your_access_key_id"
export OSS_ACCESS_KEY_SECRET="your_access_key_secret"use oss_client::{OssClient, OssConfig};
use std::time::Duration;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// 从环境变量创建客户端(推荐方式)
let client = oss_client::create_client_from_env()?;
// 上传文件
let upload_url = client.upload_file("local/document.pdf", "uploads/document.pdf")?;
println!("文件上传成功: {}", upload_url);
// 检查文件是否存在
let exists = client.file_exists("uploads/document.pdf")?;
println!("文件存在: {}", exists);
// 下载文件
client.download_file("uploads/document.pdf", "downloaded/document.pdf")?;
println!("文件下载成功");
Ok(())
}MIT OR Apache-2.0
欢迎提交 Issue 和 Pull Request!