Skip to content

Latest commit

 

History

History
86 lines (61 loc) · 2.33 KB

File metadata and controls

86 lines (61 loc) · 2.33 KB

OSS Client

English | 简体中文


OSS Client

简洁易用的阿里云 OSS (Object Storage Service) 操作库,提供基本的文件操作和签名 URL 功能。

功能特性

OssClientTrait (统一接口)

  • 统一接口: 定义了OSS客户端的基本操作接口
  • 多态支持: 支持私有bucket和公有bucket客户端的统一使用
  • 代码复用: 减少重复代码,提高维护性

OssClient (私有Bucket客户端)

  • 文件操作: 上传、下载、删除文件
  • 签名URL: 生成带过期时间的上传/下载签名URL
  • 文件管理: 检查文件存在性、生成唯一对象键
  • 连接测试: 测试OSS连接状态

PublicOssClient (公有Bucket客户端)

  • 公开访问: 生成无需签名的公开下载/访问URL
  • 批量操作: 批量生成公开URL
  • 文件操作: 上传、下载、删除文件(使用公有bucket)
  • 签名URL: 生成上传签名URL(使用公有bucket)
  • 文件管理: 检查文件存在性、生成唯一对象键
  • 连接测试: 测试公有bucket连接状态
  • 元信息获取: 获取文件元信息(通过HTTP HEAD请求)

安装

在你的 Cargo.toml 中添加依赖:

[dependencies]
oss-client = { path = "../oss-client" }  # 如果在同一个 workspace 中
# 或者
oss-client = "0.1.0"  # 如果发布到 crates.io

快速开始

环境变量配置

export 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!