Bu konuda, bir paketteki nesnelerin nasıl listeleneceği açıklanır. Örneğin; bir paketteki tüm nesneleri, belirli sayıda nesneyi veya adları belirli bir ön ek içeren nesneleri listeleyebilirsiniz.
Notlar
-
Bu konudaki örnek kodu çalıştırmadan önce özel etki alanı adı veya Security Token Service (STS) gibi yöntemler kullanarak bir OSSClient örneği oluşturmanız gerekir. Daha fazla bilgi için bkz. Başlatma.
NotBir OSSClient örneğini başlatırken paketin bulunduğu bölgeyle eşlenen bir uç nokta belirtin.
Dosyaları listelemek için
ossGetObjectiznine ihtiyacınız vardır. Daha fazla bilgi için bkz. RAM kullanıcılarına özel erişim ilkeleri atama.
Belirli sayıda nesne listeleme
Aşağıdaki örnek kod, examplebucket adlı bir pakette en fazla 20 nesnenin nasıl listeleneceğini gösterir:
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];
Adlarında belirli bir ön ek bulunan nesneleri listeleme
Aşağıdaki örnek kod, examplebucket adlı bir pakette adları "file" ön ekini içeren nesnelerin nasıl listeleneceğini gösterir:
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]
Marker değerinden sonra alfabetik sıraya göre gelen nesneleri listeleme
Aşağıdaki örnek kod, examplebucket adlı bir pakette exampleobject.txt marker değerinden sonra alfabetik sıraya göre gelen nesnelerin nasıl listeleneceğini gösterir:
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]
Nesneleri sayfalara bölerek listeleme
Önce listeleme işlemiyle ilgili global değişkenleri bildirin.
@interface ... {
NSString *_marker;
BOOL _isCompleted;
}
@end
Aşağıdaki örnek kod, examplebucket paketindeki nesnelerin sayfalara bölünerek nasıl listeleneceğini gösterir. Bu örnekte sayfa başına en fazla 20 nesne döndürülür.
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);
Belirtilen ön eki içeren nesneleri sayfalara bölerek listeleme
Önce listeleme işlemiyle ilgili global değişkenleri bildirin.
@interface ... {
NSString *_marker;
BOOL _isCompleted;
}
@end
Aşağıdaki örnek kod, examplebucket paketinde adı "file" ön ekiyle başlayan nesnelerin nasıl listeleneceğini gösterir. Bu örnekte sayfa başına en fazla 20 nesne döndürülür.
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);
İlgili Başvurular
Nesneleri listelemek için çağırabileceğiniz API işlemi hakkında daha fazla bilgi için bkz. GetBucket (ListObjects).
Bir OSSClient örneğinin nasıl başlatılacağı hakkında daha fazla bilgi için bkz. Başlatma.