获取对象列表

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

接口定义:

void S3_list_bucket(const S3BucketContext *bucketContext,
                    const char *prefix, const char *marker,
                    const char *delimiter, int maxkeys,
                    S3RequestContext *requestContext,
                    int timeoutMs,
                    const S3ListBucketHandler *handler, void *callbackData);

参数:

参数名 类型 说明
bucketContext const S3BucketContext * 包含bucket及相关的请求参数
prefix const char * 如果非NULL,则仅列举以指定的prefix作为前缀的对象
marker const char * 如果非NULL,指定一个标识符,在列举桶内对象列表时,返回的对象列表将仅是按照字典顺序排序后位于这个标识符之后的对象
delimiter const char * 如果非NULL,则是用来对桶内对象进行分组的字符串。所有名称包含指定的前缀且第一次出现delimiter字符之间的对象将作为一组元素,在返回信息的CommonPrefixes节点显示
maxkeys int 指定返回对象的最大数量,若为0则列举所有对象
requestContext S3RequestContext * 请求参数,如果为NULL,则立即同步执行请求
timeoutMs int 如果非0,则是以毫秒为单位的请求超时时间
handler const S3ResponseHandler * 回调函数
callbackData void * 回调数据

代码示例:

#include <unistd.h>

void list_bucket()
{
    S3ResponseHandler responseHandler =
        {
            &responsePropertiesCallback, &responseCompleteCallback};
    S3ListBucketHandler listBucketHandler =
        {
            responseHandler,
            &listBucketCallback};
    do
    {
        S3_list_bucket(&bucketContext, NULL, NULL, NULL, 0, NULL, 0, &listBucketHandler, NULL);

    } while (S3_status_is_retryable(statusG) && should_retry());

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