Expand description

一个 aliyun OSS 的客户端

使用方法

  1. 在自己的项目里添加如下依赖项
[dependencies]
aliyun-oss-client = "^0.8"
  1. 初始化配置信息
  • 方式一
use std::env::set_var;
set_var("ALIYUN_KEY_ID", "foo1");
set_var("ALIYUN_KEY_SECRET", "foo2");
set_var("ALIYUN_ENDPOINT", "qingdao");
set_var("ALIYUN_BUCKET", "foo4");
let client = aliyun_oss_client::Client::from_env();
  • 方式二

在项目根目录下创建 .env 文件(需将其加入 .gitignore ),内容:

ALIYUN_KEY_ID=xxxxxxx
ALIYUN_KEY_SECRET=yyyyyyyyyyyyyy
ALIYUN_ENDPOINT=https://oss-cn-shanghai.aliyuncs.com
ALIYUN_BUCKET=zzzzzzzzzz

在需要使用 OSS 的地方,这样设置:

use dotenv::dotenv;
dotenv().ok();
let client = aliyun_oss_client::Client::from_env();
  • 方式三
use aliyun_oss_client::BucketName;
let bucket = BucketName::new("bbb").unwrap();
let client = aliyun_oss_client::Client::new(
    "key1".into(),
    "secret1".into(),
    "qingdao".try_into().unwrap(),
    bucket
);

查询所有的 bucket 信息

    client.get_bucket_list().await;

获取 bucket 信息

    let response = client.get_bucket_info().await;
    println!("bucket info: {:?}", response);

查询当前 bucket 中的 object 列表

    use aliyun_oss_client::Query;
    let query = Query::new();
    let response = client.get_object_list(query).await;
    println!("objects list: {:?}", response);

也可以使用 bucket struct 查询 object 列表

    use aliyun_oss_client::Query;
    let mut query = Query::new();
    query.insert("max-keys", "5");
    query.insert("prefix", "babel");

    let result = client.get_bucket_info().await.unwrap().get_object_list(query).await;

    println!("object list : {:?}", result);

上传文件

    client.put_file("examples/bg2015071010.png", "examples/bg2015071010.png").await;

    // or 上传文件内容
    let file_content = std::fs::read("examples/bg2015071010.png").unwrap();
    client
        .put_content(file_content, "examples/bg2015071010.png", |_| {
            Some("image/png")
        })
        .await;

    // or 自定义上传文件 Content-Type
    let file_content = std::fs::read("examples/bg2015071010.png").unwrap();
    client
        .put_content_base(file_content, "image/png", "examples/bg2015071010.png")
        .await;

下载文件


    // 获取完整文件
    let content = client.get_object("bar.json", ..).await;

    // 获取文件一部分
    let content = client.get_object("bar.json", ..100).await;
    let content = client.get_object("bar.json", 100..).await;
    let content = client.get_object("bar.json", 100..200).await;

删除文件

    client.delete_object("examples/bg2015071010.png").await;

Re-exports

pub use types::BucketName;
pub use types::EndPoint;
pub use types::KeyId;
pub use types::KeySecret;
pub use types::Query;
pub use client::ClientArc as Client;
pub use client::ClientRc;

Modules

验证模块
阻塞模式(无需 async await)
bucket 操作模块
封装了 reqwest::RequestBuilder 模块
对 reqwest 进行了简单的封装,加上了 OSS 的签名验证功能
异常处理模块
存储对象模块
临时访问权限管理服务
定义 trait 们
库内置类型的定义模块

Functions

主要入口