Crate aliyun_oss_client
source ·Expand description
一个 aliyun OSS 的客户端
使用方法
- 在自己的项目里添加如下依赖项
ⓘ
[dependencies]
aliyun-oss-client = "^0.8"
- 初始化配置信息
- 方式一
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
主要入口