删除文件
通过oss_delete_object接口,可以实现删除某个文件:
void delete_object()
{
aos_pool_t *p = NULL;
aos_string_t bucket;
aos_string_t object;
oss_request_options_t *options = NULL;
aos_table_t *resp_headers = NULL;
aos_status_t *s = NULL;
aos_pool_create(&p, NULL);
/* 创建并初始化options */
options = oss_request_options_create(p);
init_options(options);
aos_str_set(&bucket, "<您的bucket名字>");
aos_str_set(&object, "<您的object名字>");
/* 删除文件 */
s = oss_delete_object(options, &bucket, &object, &resp_headers);
/* 判断是否删除成功 */
if (aos_status_is_ok(s)) {
printf("delete object succeed\n");
} else {
printf("delete object failed\n");
}
/* 释放资源*/
aos_pool_destroy(p);
}
[backcolor=transparent]注:
- 完整代码参考:GitHub
aos_pool_t *p;
aos_status_t *s;
aos_table_t *resp_headers;
oss_request_options_t *options;
char *bucket_name = "<您的bucket名字>";
char *object_name1 = "<您的object名字1>";
char *object_name2 = "<您的object名字2>";
aos_string_t bucket;
aos_string_t object1;
aos_string_t object2;
oss_object_key_t *content1;
oss_object_key_t *content2;
aos_list_t object_list;
aos_list_t deleted_object_list;
int is_quiet = 1;
options = oss_request_options_create(p);
init_options(options);
aos_str_set(&bucket, bucket_name);
aos_str_set(&object1, object_name1);
aos_str_set(&object2, object_name2);
/* 构建待删除文件列表 */
aos_list_init(&object_list);
aos_list_init(&deleted_object_list);
content1 = oss_create_oss_object_key(p);
aos_str_set(&content1->key, object_name1);
aos_list_add_tail(&content1->node, &object_list);
content2 = oss_create_oss_object_key(p);
aos_str_set(&content2->key, object_name2);
aos_list_add_tail(&content2->node, &object_list);
/* 删除多个文件 */
s = oss_delete_objects(options, &bucket, &object_list, is_quiet, &resp_headers, &deleted_object_list);
if (aos_status_is_ok(s)) {
printf("delete objects succeeded\n");
} else {
printf("delete objects failed\n");
}
aos_pool_destroy(p);
aos_pool_t *p;
oss_request_options_t *options;
aos_status_t *s;
aos_table_t *resp_headers;
char *bucket_name = "<您的bucket名字>";
char *prefix_str = "<删除文件的前缀>";
aos_string_t bucket;
aos_string_t prefix;
aos_pool_create(&p, NULL);
options = oss_request_options_create(p);
init_options(options);
aos_str_set(&bucket, bucket_name);
aos_str_set(&prefix, prefix_str);
/* 删除满足特定前缀的文件*/
s = oss_delete_objects_by_prefix(options, &bucket, &prefix);
if (aos_status_is_ok(s)) {
printf("delete objects by prefix succeeded\n");
} else {
printf("delete objects by prefix failed\n");
}
aos_pool_destroy(p);
[backcolor=transparent]注:
- 批量删除指定前缀的文件可以实现删除目录的功能,比如删除dir目录,可以通过设置prefix的值为 [backcolor=transparent]dir/ 实现。
- 如果设置prefix的值为空字符串(“”)或者NULL,将会删除整个bucket,请谨慎使用。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
您提到的代码片段是使用阿里云Object Storage Service(OSS)的SDK来实现删除文件功能的示例。这里我将为您提供一个更详细的、基于Python SDK的示例,因为Python语言在日常开发中更为常见且易于理解。
首先,确保您已经安装了阿里云Python SDK oss2
,可以通过pip安装:
pip install oss2
然后,您可以使用以下Python代码来删除OSS中的一个文件(也称为对象):
import oss2
# 需要填写您的Access Key ID和Access Key Secret
auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>')
# 需要填写您的Bucket名称和Endpoint,Endpoint可以从OSS控制台获取
bucket = oss2.Bucket(auth, 'http://<yourEndpoint>', '<yourBucketName>')
# 要删除的文件(对象)键名
object_key = '<yourObjectName>'
# 删除文件
bucket.delete_object(object_key)
print(f'Object {object_key} deleted successfully.')
请将<yourAccessKeyId>
、<yourAccessKeySecret>
、<yourEndpoint>
、<yourBucketName>
以及<yourObjectName>
替换为您的实际信息。这段代码会连接到您的OSS Bucket,并删除指定的对象。
<yourAccessKeyId>
和 <yourAccessKeySecret>
是您的阿里云账号的访问密钥对。<yourEndpoint>
是OSS服务的访问域名,例如oss-cn-hangzhou.aliyuncs.com
,具体取决于您创建Bucket时选择的区域。<yourBucketName>
是您在OSS中创建的存储空间名称。<yourObjectName>
是您想要删除的文件名(在OSS中称为对象键)。