Crate aliyun_oss_client
source ·Expand description
一个 aliyun OSS 的客户端
使用方法
- 在
cargo.toml
中添加如下依赖项
[dependencies]
aliyun-oss-client = "^0.11"
- 初始化配置信息
- 方式一
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_env
和 BucketBase::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 模块
- 阻塞模式
- bucket 操作模块
- 对 reqwest 进行了简单的封装,加上了 OSS 的签名验证功能
- 配置类型
- 解析 aliyun OSS 接口返回的 xml 原始数据的 trait
- 异常处理模块
- OSS 文件相关操作
- Object 相关功能
- STS 临时访问权限管理服务
- lib 内置类型的定义模块
Structs
- A set of HTTP headers
- Represents an HTTP header field name
- Represents an HTTP header field value.
- The Request Method (VERB)
Functions
- 主要入口
Derive Macros
- 用于实现
#[derive(CustomListError)]