列出对象

最近更新时间:2023-09-21 20:29:43

我的收藏

简介

本文档提供关于列出对象操作相关的 API 概览以及 SDK 示例代码。
API
操作名
操作描述
查询对象列表
查询存储桶下的部分或者全部对象
查询对象及其历史版本列表
查询存储桶下的部分或者全部对象及其历史版本信息

SDK API 参考

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

查询对象列表

功能说明

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

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

Objective-C
QCloudGetBucketRequest* request = [QCloudGetBucketRequest new];

// 存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket
request.bucket = @"examplebucket-1250000000";

// 单次返回的最大条目数量,默认1000
request.maxKeys = 100;

// 前缀匹配,用来规定返回的文件前缀地址
request.prefix = @"dir1/";

[request setFinishBlock:^(QCloudListBucketResult * result, NSError* error) {
// result 返回具体信息
// QCloudListBucketResult.contents 桶内文件数组
// QCloudListBucketResult.commonPrefixes 桶内文件夹数组
if (result.isTruncated) {
// 表示数据被截断,需要拉取下一页数据
self->prevPageResult = result;
}
}];

[[QCloudCOSXMLService defaultCOSXML] GetBucket:request];
说明
更多完整示例,请前往 GitHub 查看。
Swift
let getBucketReq = QCloudGetBucketRequest.init();

// 存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket
getBucketReq.bucket = "examplebucket-1250000000";

// 单次返回的最大条目数量,默认1000
getBucketReq.maxKeys = 100;

// 前缀匹配
getBucketReq.prefix = "dir/";

getBucketReq.setFinish { (result, error) in
if let result = result {
// 文件列表
let contents = result.contents

if (result.isTruncated) {
// 数据被截断,需要请求下一页数据
self.prevPageResult = result;
}
} else {
print(error!);
}
}
QCloudCOSXMLService.defaultCOSXML().getBucket(getBucketReq);
说明
更多完整示例,请前往 GitHub 查看。

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

Objective-C
QCloudGetBucketRequest* request = [QCloudGetBucketRequest new];

// 存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket
request.bucket = @"examplebucket-1250000000";

// prevPageResult 是上一页的返回结果
// 分页参数 默认以UTF-8二进制顺序列出条目,所有列出条目从marker开始
request.marker = prevPageResult.nextMarker;

// 单次返回的最大条目数量,默认1000
request.maxKeys = 100;

[request setFinishBlock:^(QCloudListBucketResult * result, NSError* error) {
// result 返回具体信息
// QCloudListBucketResult.contents 桶内文件数组
// QCloudListBucketResult.commonPrefixes 桶内文件夹数组
if (result.isTruncated) {
// 表示数据被截断,需要拉取下一页数据
self->prevPageResult = result;
}
}];

[[QCloudCOSXMLService defaultCOSXML] GetBucket:request];
说明
更多完整示例,请前往 GitHub 查看。
Swift
let getBucketReq = QCloudGetBucketRequest.init();

// 存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket
getBucketReq.bucket = "examplebucket-1250000000";

// 分页参数 默认以UTF-8二进制顺序列出条目,所有列出条目从marker开始
if let result = self.prevPageResult {
getBucketReq.marker = result.marker
}

// 单次返回的最大条目数量,默认1000
getBucketReq.maxKeys = 100;
// 前缀匹配
getBucketReq.prefix = "dir/";

getBucketReq.setFinish { (result, error) in
if let result = result {
// 文件列表
let contents = result.contents

if (result.isTruncated) {
// 数据被截断,需要请求下一页数据
self.prevPageResult = result;
}
} else {
print(error!);
}
}
QCloudCOSXMLService.defaultCOSXML().getBucket(getBucketReq);
说明
更多完整示例,请前往 GitHub 查看。

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

Objective-C
QCloudGetBucketRequest* request = [QCloudGetBucketRequest new];

// 存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket
request.bucket = @"examplebucket-1250000000";

// 单次返回的最大条目数量,默认1000
request.maxKeys = 100;

// 前缀匹配,用来规定返回的文件前缀地址
request.prefix = @"dir1/";

// 定界符为一个符号,如果有 Prefix,则将 Prefix 到 delimiter 之间的相同路径归为一类,
// 定义为 Common Prefix,然后列出所有 Common Prefix。如果没有 Prefix,则从路径起点开始
// delimiter:路径分隔符 固定为 /
request.delimiter = @"/";

// prevPageResult 是上一页的返回结果
// 分页参数 默认以UTF-8二进制顺序列出条目,所有列出条目从marker开始
request.marker = prevPageResult.nextMarker;

[request setFinishBlock:^(QCloudListBucketResult * result, NSError* error) {
// result 返回具体信息
// QCloudListBucketResult.contents 桶内文件数组
// QCloudListBucketResult.commonPrefixes 桶内文件夹数组
if (result.isTruncated) {
// 表示数据被截断,需要拉取下一页数据
self->prevPageResult = result;
}
}];

[[QCloudCOSXMLService defaultCOSXML] GetBucket:request];
说明
更多完整示例,请前往 GitHub 查看。
Swift
let getBucketReq = QCloudGetBucketRequest.init();

// 存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.cloud.tencent.com/cos5/bucket
getBucketReq.bucket = "examplebucket-1250000000";

// 单次返回的最大条目数量,默认1000
getBucketReq.maxKeys = 100;

// 前缀匹配,用来规定返回的文件前缀地址
getBucketReq.prefix = "dir/";

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

// 分页参数 默认以UTF-8二进制顺序列出条目,所有列出条目从marker开始
if let result = self.prevPageResult {
getBucketReq.marker = result.marker
}

getBucketReq.setFinish { (result, error) in
if let result = result {
// 文件列表
let contents = result.contents

if (result.isTruncated) {
// 数据被截断,需要请求下一页数据
self.prevPageResult = result;
}
} else {
print(error!);
}
}
QCloudCOSXMLService.defaultCOSXML().getBucket(getBucketReq);
说明
更多完整示例,请前往 GitHub 查看。

查询对象历史版本列表

功能说明

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

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

QCloudListObjectVersionsRequest* listObjectVersionsRequest = [[QCloudListObjectVersionsRequest alloc] init];

// 存储桶名称
listObjectVersionsRequest.bucket = @"bucketname";

// 一页请求数据条目数,默认 1000
listObjectVersionsRequest.maxKeys = 100;

//从当前key列出剩余的条目
listObjectVersionsRequest.keyMarker = prevPageResult.nextKeyMarker;
//从当前key的某个版本列出剩余的条目
listObjectVersionsRequest.versionIdMarker = prevPageResult.nextVersionIDMarkder;
[listObjectVersionsRequest setFinishBlock:^(QCloudListVersionsResult * _Nonnull result,
NSError * _Nonnull error) {

// 已删除的文件
NSArray<QCloudDeleteMarker*> *deleteMarker = result.deleteMarker;

// 对象版本条目
NSArray<QCloudVersionContent*> *versionContent = result.versionContent;

if (result.isTruncated) {
// 表示数据被截断,需要拉取下一页数据
self->prevPageResult = result;
}


}];

[[QCloudCOSXMLService defaultCOSXML] ListObjectVersions:listObjectVersionsRequest];
说明
更多完整示例,请前往 GitHub 查看。