Releases: tu6ge/oss-rs
Releases · tu6ge/oss-rs
V 0.13.0
What's Changed
示例代码
use aliyun_oss_client::{Client, Bucket};
use futures_util::StreamExt;
async fn run() -> Result<(), aliyun_oss_client::Error> {
let client = Client::from_env()?;
// or let client = Client::new("key_xxx", "secret_yyy", "endpoint_url")?;
// 获取 buckets 列表
let buckets = client.get_buckets().await?;
// 用流的方式获取文件列表
// 接口每次请求只读取5个文件,随着 next() 函数的不断调用,每隔五个会重新调用一次接口,获取下一页的文件
let mut stream = Client::from_env()?
.bucket("honglei123")?
.max_keys(5)
.objects();
let mut i = 0;
while let Some(item) = stream.next().await {
println!("{item:?}");
i = i + 1;
if i > 7 {
// 不加限制的话,会获取所有文件
break;
}
}
// 完整的查询条件示例
let mut stream = Client::from_env()?
.bucket("honglei123")?
.max_keys(5)
.prefix("prefix1/")
.delimiter("/")
.continuation_token("foo")
.encoding_type("foo2")
.start_after("foo3")
.fetch_owner(true)
.objects();
// 查询 Object 并转化成自定义类型
#[derive(Debug, Deserialize)]
struct MyObject {
Key: String,
}
let mut stream = Client::from_env()?
.bucket("honglei123")?
.max_keys(5)
.objects_as::<MyObject>();
// 获取文件的详细信息
let obj_info = Bucket::from_env()?
.object("abc.txt")
.get_info()
.await?;
// 上传文件
let res = Bucket::from_env()?
.object("abc2.txt")
.content_type("text/plain;charset=utf-8")
.upload("aaab")
.await?;
// 使用文件句柄上传文件
let mut f = tokio::fs::File::open("example_file.txt").await?;
let info = Bucket::from_env()?
.object("abc_file.txt")
.content_type("text/plain;charset=utf-8")
.upload(f)
.await?;
// 使用目录上传文件
let res = Bucket::from_env()?
.object("abc2.txt")
.content_type("text/plain;charset=utf-8")
.upload_file("local.txt")
.await?;
// 下载文件到文件句柄
// 使用流式下载,支持边下载边解压/压缩
let mut file = tokio::fs::File::create("aaa.txt").await?;
let res = Bucket::from_env()?
.object("download1.jpg")
.download(&mut file)
.await?;
//下载文件到指定文件路径
let res = Bucket::from_env()?
.object("download1.jpg")
.download_to_file("local.jpg")
.await?;
//获取下载文件的 Vec<u8> 内容
let content = Bucket::from_env()?
.object("download1.jpg")
.download_to_bytes()
.await?;
//获取下载文件的 String 内容
let content = Bucket::from_env()?
.object("download1.jpg")
.download_to_string()
.await?;
// 复制文件
let res = Bucket::from_env()?
.object("new_file.txt")
.copy_source("/bucket_name/source_file.txt")
.content_type("text/plain;charset=utf-8")
.copy()
.await?;
// 分片上传(大文件)
let result = Bucket::from_env()?
.object("myvideo23.mov")
.multipart()
//.part_size(3 * 1024 * 1024) // 调整分片大小,默认 1M
.from_file("./video.mov")
.upload()
.await?;
// 删除文件
let result = Bucket::from_env()?
.object("abc.txt")
.delete()
.await?;
Ok(())
}Full Changelog: v0.13.0-alpha12...v0.13.0
V0.12.7
V0.12.6
V0.12.5
V0.12.4
V0.12.3
V0.12.2
v0.12.1
v0.12.0
⚠ BREAKING CHANGES
- object: object 构建器调整
- object: object 构建器调整
- decode: remove set_next_continuation_token
- error: set field to private
- types: change QueryKey to struct
- types: change EndPoint to struct
- decode: remove ItemError trait
- types: change Query insert method
- decode: next_token remove Option warp
Features
- auth: 为 Request 附加 with_oss 方法 (114c1e0)
- auth: change AuthError to struct (a4b7962)
- auth: change with_oss args type (21820c7)
- auth: set OssHost trait to private (2befdb5)
- auth: set_sensitive with secret (7a02e84)
- bucket: add to_vec method in blocking (2d63089)
- bucket: change BucketError to struct (70dfe5b)
- bucket: change ExtractItemError to struct (ff317e9)
- builder: add Box in Error enum (5117b52)
- builder: change BuilderError to struct (cd7f123)
- config: add set_internal in BucketBase (576de60)
- config: change InvalidConfig to struct (c80355d)
- config: fixed InvalidConfig display info (7f31892)
- core: decode xml return more info (0c3170f)
- core: decoupling in Errors (9610ad6)
- core: default datetime value update (a8c2bed)
- core: renamed ObjectList, ListBuckets (8c17aa9)
- decode: 解析 xml 错误时,返回更多信息 (c1dad3d)
- decode: add Box in Error enum (985cb45)
- decode: Add non_exhaustive in Error type (f39f76b)
- decode: Add non_exhaustive in InnerListError (72f33c9)
- decode: change enum to struct InnerListError (5ea1a06)
- decode: change Error in trait (0dd2c1b)
- decode: next_token remove Option warp (d91f473)
- decode: remove ItemError trait (e0c8424)
- decode: remove set_next_continuation_token (dd005f8)
- decode: set ListErrorKind to private (5adfb2a)
- derive: remove #[derive(CustomItemError)] (db6cca3)
- error: change OssError to struct (e089790)
- error: remove Input in Error enum (e8c6d4e)
- error: set field to private (e0bbc43)
- file: change FileError to struct (7fb1a0a)
- file: change OssError enum item (a489952)
- file: get_object support more num type (c8c111b)
- file: rename BlockingFiles (25bb539)
- lint: remove warning lint (9915737)
- object: add ListBucketsSync type alias (8f567ae)
- object: add new method of StorageClass (11ebb58)
- object: add ObjectListSync type (e8012be)
- object: change BuildInItemError to struct (5a8b4b5)
- object: change ExtractListError to struct (8af9d72)
- object: change ObjectListError to struct (d3cfe3c)
- object: object 构建器调整 (d693e50)
- object: object 构建器调整 (5a094b3)
- object: set BuildInItemErrorKind private (6f6b198)
- object: set object_list to private in struct (ba66764)
- sts: set sensitive security-token (b9dad10)
- type: change InvalidObjectBase inner (0e37837)
- types: 从 env 转化配置的时候,处理 endpoint 的情况 (8e95b37)
- types: 升级 KeySecret 类型的安全性 (29c44fc)
- types: add non_exhaustive in QueryKey (2601b03)
- types: Add priv in inner type (671cb12)
- types: change EndPoint to struct (32628ee)
- types: change InvalidBucketName display info (71df709)
- types: change InvalidObjectDir display info (8da7edf)
- types: change Query insert method (8e041c8)
- types: change QueryKey to struct (12fe959)
- types: Date only from DateTime (bdfed8c)
- types: rename Trait (4fc1b87)
- types: set ObjectBase::new to pub(crate) (7746c73)