控制台指南

最佳实践

开发者指南

数据湖存储

API 文档

SDK 文档

文档捉虫大赛火热进行中,好礼多多> HOT

简介

本文档提供关于列出对象操作相关的 API 概览以及 SDK 示例代码。

API 操作名 操作描述
GET Bucket(List Objects) 查询对象列表 查询存储桶下的部分或者全部对象
GET Bucket Object Versions 查询对象及其历史版本列表 查询存储桶下的部分或者全部对象及其历史版本信息

SDK API 参考

SDK 所有接口的具体参数与方法说明,请参考 SDK API 参考

查询对象列表

功能说明

查询存储桶下的部分或者全部对象。

示例代码一: 获取第一页数据

String bucketName = "examplebucket-1250000000"; //格式:BucketName-APPID;
final GetBucketRequest getBucketRequest = new GetBucketRequest(bucketName);

// 前缀匹配,用来规定返回的对象前缀地址
getBucketRequest.setPrefix("dir/");

// 单次返回最大的条目数量,默认1000
getBucketRequest.setMaxKeys(100);

cosXmlService.getBucketAsync(getBucketRequest, new CosXmlResultListener() {
    @Override
    public void onSuccess(CosXmlRequest request, CosXmlResult result) {
        GetBucketResult getBucketResult = (GetBucketResult) result;
        if (getBucketResult.listBucket.isTruncated) {
            // 表示数据被截断,需要拉取下一页数据
            prevPageResult = getBucketResult;
        }
    }

    // 如果您使用 kotlin 语言来调用,请注意回调方法中的异常是可空的,否则不会回调 onFail 方法,即:
    // clientException 的类型为 CosXmlClientException?,serviceException 的类型为 CosXmlServiceException?
    @Override
    public void onFail(CosXmlRequest cosXmlRequest,
                       @Nullable CosXmlClientException clientException,
                       @Nullable CosXmlServiceException serviceException) {
        if (clientException != null) {
            clientException.printStackTrace();
        } else {
            serviceException.printStackTrace();
        }
    }
});

说明:

更多完整示例,请前往 GitHub 查看。

示例代码二:请求下一页数据

String bucketName = "examplebucket-1250000000"; //格式:BucketName-APPID;


GetBucketRequest getBucketRequest = new GetBucketRequest(bucketName);

// 前缀匹配,用来规定返回的对象前缀地址
getBucketRequest.setPrefix("dir/");

// prevPageResult 是上一页的返回结果,这里的 nextMarker 表示下一页的起始位置
String nextMarker = prevPageResult.listBucket.nextMarker;
getBucketRequest.setMarker(nextMarker);

// 单次返回最大的条目数量,默认1000
getBucketRequest.setMaxKeys(100);

cosXmlService.getBucketAsync(getBucketRequest, new CosXmlResultListener() {
    @Override
    public void onSuccess(CosXmlRequest request, CosXmlResult result) {
        GetBucketResult getBucketResult = (GetBucketResult) result;
        if (getBucketResult.listBucket.isTruncated) {
            // 表示数据被截断,需要拉取下一页数据
        }
    }

    // 如果您使用 kotlin 语言来调用,请注意回调方法中的异常是可空的,否则不会回调 onFail 方法,即:
    // clientException 的类型为 CosXmlClientException?,serviceException 的类型为 CosXmlServiceException?
    @Override
    public void onFail(CosXmlRequest cosXmlRequest,
                       @Nullable CosXmlClientException clientException,
                       @Nullable CosXmlServiceException serviceException) {
        if (clientException != null) {
            clientException.printStackTrace();
        } else {
            serviceException.printStackTrace();
        }
    }
});

说明:

更多完整示例,请前往 GitHub 查看。

示例代码三:获取对象列表与子目录

String bucketName = "examplebucket-1250000000"; //格式:BucketName-APPID;
GetBucketRequest getBucketRequest = new GetBucketRequest(bucketName);

// 前缀匹配,用来规定返回的对象前缀地址
getBucketRequest.setPrefix("dir/");

// 单次返回最大的条目数量,默认1000
getBucketRequest.setMaxKeys(100);

// 定界符为一个符号,如果有 Prefix,
// 则将 Prefix 到 delimiter 之间的相同路径归为一类,定义为 Common Prefix,
// 然后列出所有 Common Prefix。如果没有 Prefix,则从路径起点开始
getBucketRequest.setDelimiter("/");

cosXmlService.getBucketAsync(getBucketRequest, new CosXmlResultListener() {
    @Override
    public void onSuccess(CosXmlRequest request, CosXmlResult result) {
        GetBucketResult getBucketResult = (GetBucketResult) result;
    }

    // 如果您使用 kotlin 语言来调用,请注意回调方法中的异常是可空的,否则不会回调 onFail 方法,即:
    // clientException 的类型为 CosXmlClientException?,serviceException 的类型为 CosXmlServiceException?
    @Override
    public void onFail(CosXmlRequest cosXmlRequest,
                       @Nullable CosXmlClientException clientException,
                       @Nullable CosXmlServiceException serviceException) {
        if (clientException != null) {
            clientException.printStackTrace();
        } else {
            serviceException.printStackTrace();
        }
    }
});

说明:

更多完整示例,请前往 GitHub 查看。

查询对象历史版本列表

功能说明

查询开启版本控制的存储桶下的部分或者全部对象。

示例代码一:获取对象历史版本列表第一页数据

String bucketName = "examplebucket-1250000000"; //格式:BucketName-APPID;
final GetBucketObjectVersionsRequest getBucketRequest =
        new GetBucketObjectVersionsRequest(bucketName);

// 前缀匹配,用来规定返回的对象前缀地址
getBucketRequest.setPrefix("dir/");

// 单次返回最大的条目数量,默认1000
getBucketRequest.setMaxKeys(100);

cosXmlService.getBucketObjectVersionsAsync(getBucketRequest,
        new CosXmlResultListener() {
    @Override
    public void onSuccess(CosXmlRequest request, CosXmlResult result) {
        GetBucketObjectVersionsResult getBucketResult =
                (GetBucketObjectVersionsResult) result;
        if (getBucketResult.listVersionResult.isTruncated) {
            // 表示数据被截断,需要拉取下一页数据
            prevPageResult = getBucketResult;
        }
    }

    // 如果您使用 kotlin 语言来调用,请注意回调方法中的异常是可空的,否则不会回调 onFail 方法,即:
    // clientException 的类型为 CosXmlClientException?,serviceException 的类型为 CosXmlServiceException?
    @Override
    public void onFail(CosXmlRequest cosXmlRequest,
                       @Nullable CosXmlClientException clientException,
                       @Nullable CosXmlServiceException serviceException) {
        if (clientException != null) {
            clientException.printStackTrace();
        } else {
            serviceException.printStackTrace();
        }
    }
});

说明:

更多完整示例,请前往 GitHub 查看。

示例代码二:获取对象历史版本列表下一页数据

String bucketName = "examplebucket-1250000000"; //格式:BucketName-APPID;
final GetBucketObjectVersionsRequest getBucketRequest =
        new GetBucketObjectVersionsRequest(bucketName);

// 前缀匹配,用来规定返回的对象前缀地址
getBucketRequest.setPrefix("dir/");

// 单次返回最大的条目数量,默认1000
getBucketRequest.setMaxKeys(100);

// prevPageResult 是上一页的返回结果,这里的 nextMarker 与 nextVersionIdMarker
// 表示下一页的起始位置
getBucketRequest.setKeyMarker(prevPageResult.listVersionResult
        .nextKeyMarker);
getBucketRequest.setVersionIdMarker(prevPageResult.listVersionResult
        .nextVersionIdMarker);

cosXmlService.getBucketObjectVersionsAsync(getBucketRequest,
        new CosXmlResultListener() {
    @Override
    public void onSuccess(CosXmlRequest request, CosXmlResult result) {
        GetBucketObjectVersionsResult getBucketResult =
                (GetBucketObjectVersionsResult) result;
        if (getBucketResult.listVersionResult.isTruncated) {
            // 表示数据被截断,需要拉取下一页数据
            prevPageResult = getBucketResult;
        }
    }

    // 如果您使用 kotlin 语言来调用,请注意回调方法中的异常是可空的,否则不会回调 onFail 方法,即:
    // clientException 的类型为 CosXmlClientException?,serviceException 的类型为 CosXmlServiceException?
    @Override
    public void onFail(CosXmlRequest cosXmlRequest,
                       @Nullable CosXmlClientException clientException,
                       @Nullable CosXmlServiceException serviceException) {
        if (clientException != null) {
            clientException.printStackTrace();
        } else {
            serviceException.printStackTrace();
        }
    }
});

说明:

更多完整示例,请前往 GitHub 查看。

目录