建立bucket
OSSCreateBucketRequest * create = [OSSCreateBucketRequest new];
create.bucketName = @"<bucketName>";
create.xOssACL = @"public-read";
create.location = @"oss-cn-hangzhou";
OSSTask * createTask = [client createBucket:create];
[createTask continueWithBlock:^id(OSSTask *task) {
if (!task.error) {
NSLog(@"create bucket success!");
} else {
NSLog(@"create bucket failed, error: %@", task.error);
}
return nil;
}];
上述代碼在建立bucket時,指定了Bucket的ACL和所在的資料中心。
- 每個使用者的Bucket數量不能超過30個。
- 每個Bucket的名字全域唯一,也就是說建立的Bucket不能和其他使用者已經在使用的Bucket同名,否則會建立失敗。
- 建立的時候可以選擇Bucket ACL許可權,如果不設定ACL,預設是private。
- 建立成功結果返回Bucket所在資料中心。
羅列所有bucket
OSSGetServiceRequest * getService = [OSSGetServiceRequest new];
OSSTask * getServiceTask = [client getService:getService];
[getServiceTask continueWithBlock:^id(OSSTask *task) {
if (!task.error) {
OSSGetServiceResult * result = task.result;
NSLog(@"buckets: %@", result.buckets);
NSLog(@"owner: %@, %@", result.ownerId, result.ownerDispName);
[result.buckets enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
NSDictionary * bucketInfo = obj;
NSLog(@"BucketName: %@", [bucketInfo objectForKey:@"Name"]);
NSLog(@"CreationDate: %@", [bucketInfo objectForKey:@"CreationDate"]);
NSLog(@"Location: %@", [bucketInfo objectForKey:@"Location"]);
}];
}
return nil;
}];
上處代碼返回要求者擁有的所有Bucket。
- 匿名訪問不支援該操作。
羅列bucket中的檔案
OSSGetBucketRequest * getBucket = [OSSGetBucketRequest new];
getBucket.bucketName = @"<bucketName>";
// getBucket.marker = @"";
// getBucket.prefix = @"";
// getBucket.delimiter = @"";
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;
}];
上述代碼羅列了Bucket中的檔案
- 羅列操作必須具備訪問該Bukcet的許可權。
- 羅列時,可以通過prefix,marker,delimiter和max-keys對list做限定,返回部分結果。
刪除bucket
OSSDeleteBucketRequest * delete = [OSSDeleteBucketRequest new];
delete.bucketName = @"<bucketName>";
OSSTask * deleteTask = [client deleteBucket:delete];
[deleteTask continueWithBlock:^id(OSSTask *task) {
if (!task.error) {
NSLog(@"delete bucket success!");
} else {
NSLog(@"delete bucket failed, error: %@", task.error);
}
return nil;
}];
上述代碼刪除了一個Bucket。
- 只有Bucket的擁有者才能刪除這個Bucket。
- 為了防止誤刪除的發生,OSS不允許使用者刪除一個非空的Bucket。