开发者社区 问答 正文

C-SDK之如何实现管理文件(四)?


删除文件


通过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]注:


批量删除文件


通过oss_delete_objects接口,可以实现删除一批文件,用户可以通过is_quiet参数来指定是否返回删除的结果: 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);



批量删除指定前缀的文件


通过oss_delete_objects_by_prefix接口,可以实现删除一批指定前缀的文件: 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,请谨慎使用。

展开
收起
青衫无名 2017-10-19 11:01:11 1938 分享 版权
阿里云 AI 助理回答

您提到的代码片段是使用阿里云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中称为对象键)。
有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答分类:
问答标签:
问答地址: