Este tema describe cómo listar los objetos de un bucket. Por ejemplo, puede listar todos los objetos, una cantidad específica de ellos o aquellos cuyos nombres contienen un prefijo determinado dentro de un bucket.
Notas
-
Antes de ejecutar el código de ejemplo de este tema, debe crear una instancia de OSSClient mediante métodos como el uso de un nombre de dominio personalizado o Security Token Service (STS). Para obtener más información, consulte Initialization.
NotaCuando inicialice una instancia de OSSClient, especifique un endpoint que corresponda a la región del bucket.
Para listar archivos, necesita el permiso
ossGetObject. Para obtener más información, consulte Grant custom access policies to RAM users.
Listar una cantidad específica de objetos
A continuación se muestra un ejemplo de código para listar hasta 20 objetos en un bucket llamado examplebucket:
OSSGetBucketRequest * getBucket = [OSSGetBucketRequest new];
// Specify the name of the bucket. Example: examplebucket.
getBucket.bucketName = @"examplebucket";
// Specify the maximum number of returned objects. By default, the value of this parameter is 100. The maximum value you can specify is 1000.
getBucket.maxKeys = 20;
OSSTask * getBucketTask = [client getBucket:getBucket];
[getBucketTask continueWithBlock:^id(OSSTask *task) {
if (!task.error) {
OSSGetBucketResult * result = task.result;
NSLog(@"get bucket success!");
for (NSDictionary * objectInfo in result.contents) {
NSLog(@"list object: %@", objectInfo);
}
} else {
NSLog(@"get bucket failed, error: %@", task.error);
}
return nil;
}];
// Implement synchronous blocking to wait for the task to complete.
// [getBucketTask waitUntilFinished];
Listar objetos cuyos nombres contienen un prefijo específico
El siguiente ejemplo de código muestra cómo listar los objetos cuyo nombre contiene el prefijo "file" en un bucket llamado examplebucket:
OSSGetBucketRequest * getBucket = [OSSGetBucketRequest new];
// Specify the name of the bucket. Example: examplebucket.
getBucket.bucketName = @"examplebucket";
// Specify the prefix.
getBucket.prefix = @"file";
OSSTask * getBucketTask = [client getBucket:getBucket];
[getBucketTask continueWithBlock:^id(OSSTask *task) {
if (!task.error) {
OSSGetBucketResult * result = task.result;
NSLog(@"get bucket success!");
for (NSDictionary * objectInfo in result.contents) {
NSLog(@"list object: %@", objectInfo);
}
} else {
NSLog(@"get bucket failed, error: %@", task.error);
}
return nil;
}];
// Implement synchronous blocking to wait for the task to complete.
// [getBucketTask waitUntilFinished]
Listar objetos cuyos nombres son alfabéticamente posteriores al valor de marker
El siguiente ejemplo de código muestra cómo listar los objetos cuyos nombres son alfabéticamente posteriores al marcador exampleobject.txt en un bucket llamado examplebucket:
OSSGetBucketRequest * getBucket = [OSSGetBucketRequest new];
// Specify the name of the bucket. Example: examplebucket.
getBucket.bucketName = @"examplebucket";
// Specify the marker. Objects whose names are alphabetically after the marker are returned.
// If the object specified by marker does not exist in the bucket, the objects whose names are alphabetically after the value of marker are returned.
getBucket.marker = @"exampleobject.txt";
OSSTask * getBucketTask = [client getBucket:getBucket];
[getBucketTask continueWithBlock:^id(OSSTask *task) {
if (!task.error) {
OSSGetBucketResult * result = task.result;
NSLog(@"get bucket success!");
for (NSDictionary * objectInfo in result.contents) {
NSLog(@"list object: %@", objectInfo);
}
} else {
NSLog(@"get bucket failed, error: %@", task.error);
}
return nil;
}];
// Implement synchronous blocking to wait for the task to complete.
// [getBucketTask waitUntilFinished]
Listar objetos por página
Primero, declare las variables globales relacionadas con la operación de listado.
@interface ... {
NSString *_marker;
BOOL _isCompleted;
}
@end
El siguiente ejemplo de código muestra cómo listar por página los objetos del bucket examplebucket. En este caso, se devuelven hasta 20 objetos por página.
do {
OSSGetBucketRequest *getBucket = [OSSGetBucketRequest new];
getBucket.bucketName = @"examplebucket";
getBucket.marker = _marker; // Accessing the _marker instance variable
getBucket.maxKeys = 20;
OSSTask *getBucketTask = [client getBucket:getBucket];
[getBucketTask continueWithBlock:^id(OSSTask *task) {
if (!task.error) {
OSSGetBucketResult *result = task.result;
NSLog(@"Get bucket success!");
NSLog(@"objects: %@", result.contents);
if (result.isTruncated) {
_marker = result.nextMarker; // Update the _marker instance variable
_isCompleted = NO;
} else {
_isCompleted = YES;
}
} else {
_isCompleted = YES;
NSLog(@"Get bucket failed, error: %@", task.error);
}
return nil;
}];
// Implement synchronous blocking to wait for the task to complete.
[getBucketTask waitUntilFinished];
} while (!_isCompleted);
Listar por página los objetos cuyos nombres contienen el prefijo especificado
Primero, declare las variables globales relacionadas con la operación de listado.
@interface ... {
NSString *_marker;
BOOL _isCompleted;
}
@end
El siguiente ejemplo de código muestra cómo listar los objetos con el prefijo "file" en el nombre dentro del bucket examplebucket. En este caso, se devuelven hasta 20 objetos por página.
do {
OSSGetBucketRequest *getBucket = [OSSGetBucketRequest new];
getBucket.bucketName = @"examplebucket";
getBucket.marker = _marker; // Accessing the _marker instance variable
getBucket.maxKeys = 20;
getBucket.prefix = @"file";
OSSTask *getBucketTask = [client getBucket:getBucket];
[getBucketTask continueWithBlock:^id(OSSTask *task) {
if (!task.error) {
OSSGetBucketResult *result = task.result;
NSLog(@"Get bucket success!");
NSLog(@"objects: %@", result.contents);
if (result.isTruncated) {
_marker = result.nextMarker; // Update the _marker instance variable
_isCompleted = NO;
} else {
_isCompleted = YES;
}
} else {
_isCompleted = YES;
NSLog(@"Get bucket failed, error: %@", task.error);
}
return nil;
}];
// Implement synchronous blocking to wait for the task to complete.
[getBucketTask waitUntilFinished];
} while (!_isCompleted);
Referencias
Para obtener más información sobre la API que permite listar objetos, consulte GetBucket (ListObjects).
Para conocer cómo inicializar una instancia de OSSClient, consulte Initialization.