列出对象

最后更新时间:2020-08-10 11:16:58

    简介

    本文档提供关于列出对象操作相关的 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;
            }
        }
    
        @Override
        public void onFail(CosXmlRequest cosXmlRequest,
                           CosXmlClientException clientException,
                           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) {
                // 表示数据被截断,需要拉取下一页数据
            }
        }
    
        @Override
        public void onFail(CosXmlRequest cosXmlRequest,
                           CosXmlClientException clientException,
                           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;
        }
    
        @Override
        public void onFail(CosXmlRequest cosXmlRequest,
                           CosXmlClientException clientException,
                           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;
            }
        }
    
        @Override
        public void onFail(CosXmlRequest cosXmlRequest,
                           CosXmlClientException clientException,
                           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;
            }
        }
    
        @Override
        public void onFail(CosXmlRequest cosXmlRequest,
                           CosXmlClientException clientException,
                           CosXmlServiceException serviceException) {
            if (clientException != null) {
                clientException.printStackTrace();
            } else {
                serviceException.printStackTrace();
            }
        }
    });

    说明:

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

    Was this page helpful?

    本页内容是否解决了您的问题?

    • 完全没帮助
    • 文档较差
    • 文档一般
    • 文档不错
    • 文档很好
    反馈
    帮助