存储空间
存储空间(Bucket)是存储对象(Object)的容器。对象都隶属于存储空间。
创建存储空间
以下代码用于创建存储空间:
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 数量不能超过 30 个。
- 每个 Bucket 的名字全局唯一,即创建的 Bucket 不能和其他用户已经在使用的 Bucket 同名,否则会创建失败。
- 创建的时候可以设置 Bucket ACL 权限,如果不设置 ACL,默认是 Private。
- 创建成功结果返回 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;
}];
说明 匿名访问不支持该操作。
列举存储空间中的文件
以下代码用于列举存储空间中的文件:
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;
}];
说明
- 列举操作必须具备访问该存储空间的权限。
- 列举时可以通过 prefix,marker,delimiter 和 max-keys 对 list 做限定,指定仅返回部分结果。
删除存储空间
以下代码用于删除单个存储空间:
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。
- 为了防止误删除,OSS 不允许用户删除一个非空的 Bucket。
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
评论