Crate aliyun_oss_client

Source
Expand description

§一个 aliyun OSS 的客户端

§使用方法

  1. cargo.toml 中添加如下依赖项
[dependencies]
aliyun-oss-client = "^0.11"
  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
);

§支持内网访问 Version +0.9

在阿里云的 ECS 上请求 OSS 接口,使用内网 API 有更高的效率,只需要在 ECS 上设置 ALIYUN_OSS_INTERNAL 环境变量为 true 即可

0.12 版本开始,只有在 Client::from_envBucketBase::from_env 这两个方法中 ALIYUN_OSS_INTERNAL 环境变量才起作用, 其他地方,请使用 EndPoint::set_internal 进行切换

§查询所有的 bucket 信息

了解更多,请查看 get_bucket_list

    client.get_bucket_list().await;

§获取 bucket 信息

了解更多,请查看 get_bucket_info

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

§查询当前 bucket 中的 object 列表

了解更多,请查看 get_object_list

查询条件参数有多种方式,具体参考 Bucket::get_object_list 文档

    let response = client.get_object_list([]).await;
    println!("objects list: {:?}", response);

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

了解更多,请查看 Bucket::get_object_list

    let query = [("max-keys".into(), "5".into()), ("prefix".into(), "babel".into())];
    let result = client.get_bucket_info().await.unwrap().get_object_list(query).await;

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

§上传文件

了解更多,请查看 put_file, put_content, put_content_base


    use aliyun_oss_client::file::Files;
    client.put_file("examples/bg2015071010.png", "examples/bg2015071010.png").await;

    let path: ObjectPath = "examples/bg2015071010.png".parse().unwrap();
    client.put_file("examples/bg2015071010.png", path).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;

§下载文件

了解更多,请查看 get_object

    use aliyun_oss_client::file::Files;

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

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

§删除文件

了解更多,请查看 delete_object

    use aliyun_oss_client::file::Files;
    client.delete_object("examples/bg2015071010.png").await;

Re-exports§

pub use client::ClientArc as Client;
pub use client::ClientRc;
pub use errors::OssError as Error;
pub use errors::OssResult as Result;
pub use types::object::ObjectDir;
pub use types::object::ObjectPath;
pub use types::BucketName;
pub use types::EndPoint;
pub use types::KeyId;
pub use types::KeySecret;
pub use types::Query;
pub use types::QueryKey;
pub use types::QueryValue;

Modules§

auth
Auth 模块
blocking
阻塞模式
bucket
bucket 操作模块
client
对 reqwest 进行了简单的封装,加上了 OSS 的签名验证功能
config
配置类型
decode
解析 aliyun OSS 接口返回的 xml 原始数据的 trait
errors
异常处理模块
file
OSS 文件相关操作
object
Object 相关功能
sts
STS 临时访问权限管理服务
types
lib 内置类型的定义模块

Structs§

HeaderMap
A set of HTTP headers
HeaderName
Represents an HTTP header field name
HeaderValue
Represents an HTTP header field value.
Method
The Request Method (VERB)

Functions§

client
主要入口

Derive Macros§

DecodeListError
用于实现 #[derive(CustomListError)]