-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
需要判断bucket中是否存在某个object应该怎么做 #7
Labels
Comments
看起来是一个新特性,在尝试解决的时候,却暴露了新的问题,临时可以使用如下代码进行判断
|
非常感谢,后续是否考虑完善这些功能 |
问题没有解决呢,先开着 |
刚刚发布了新版本,有更方便的方式可以做到这个
|
好的,谢谢 |
因为你之前没实现head_object,我是用以下方式判断object是否存在的,有现在的方式就方便多了嘛 // 参数说明:https://help.aliyun.com/document_detail/187544.html
let mut query = Query::new();
query.insert("prefix", oss_dir.to_string());
query.insert("max-keys", "1");
match client.get_object_list(query).await {
Ok(object_list) => {
// log::trace!("object list: {:#?}", object_list);
let key_count = object_list.key_count();
Ok(key_count > &0)
}
Err(e) => Err(anyhow!(e.to_string())),
} 我现在需要改写成这样: let (url, resource) = client.get_object_base(oss_dir).get_url_resource([]);
let headers = vec![];
let builder = client.builder_with_header(Method::HEAD, url, resource, headers)?;
let response = builder.send().await?;
let status = response.status();
let sc200 = StatusCode::from_u16(200)?;
let sc300 = StatusCode::from_u16(300)?;
Ok(status >= sc200 && status < sc300) |
其实还可以改成这样: let (url, resource) = client.get_object_base(oss_dir).get_url_resource([]);
let headers = vec![];
let builder = client.builder_with_header(Method::HEAD, url, resource, headers)?;
let response = builder.send().await?;
let status = response.status();
- let sc200 = StatusCode::from_u16(200)?;
- let sc300 = StatusCode::from_u16(300)?;
- Ok(status >= sc200 && status < sc300)
+ Ok(status.is_success()) |
可以这样写的话就简洁很多噢 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
需要判断bucket中是否存在某个object应该怎么做, 好像没有实现head_object方法
The text was updated successfully, but these errors were encountered: