删除对象

对象是存储数据的基本单元。对象由元信息(Object Meta),用户数据(Data)和文件名(Key)组成。对象由桶内部唯一的Key来标识。本文介绍如何删除对象。

接口定义:

void S3_delete_object(const S3BucketContext *bucketContext, const char *key,
                      S3RequestContext *requestContext,
                      int timeoutMs,
                      const S3ResponseHandler *handler, void *callbackData);

参数:

参数名 类型 说明
bucketContext const S3BucketContext * 包含bucket及相关的请求参数
key const char * 要删除的对象名称
requestContext S3RequestContext * 请求参数,如果为NULL,则立即同步执行请求
timeoutMs int 如果非0,则是以毫秒为单位的请求超时时间
handler const S3ResponseHandler * 回调函数
callbackData void * 回调数据

代码示例:

#include <unistd.h>

void delete_object(const char *bucketName, const char *key)
{
    S3BucketContext bucketContext =
        {
            hostname,
            bucketName,
            protocolG,
            uriStyleG,
            accessKeyG,
            secretKeyG};

    S3ResponseHandler responseHandler =
        {
            0,
            &responseCompleteCallback};

    do
    {
        S3_delete_object(&bucketContext, key, 0, 0, &responseHandler, 0);
    } while (S3_status_is_retryable(statusG) && should_retry());

    if ((statusG != S3StatusOK) &&
        (statusG != S3StatusErrorPreconditionFailed))
    {
        printError();
    }
}