存储空间(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; }];
说明
- 同一阿里云账号在同一地域内创建的存储空间总数不能超过 100 个。
- 每个存储空间的名字全局唯一,否则会创建失败。
- 创建存储空间时可以设置 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; }];
注意 如果存储空间不为空(存储空间中有文件或者是尚未完成的分片上传),则存储空间无法删除,必须删除存储空间中的所有文件和未完成的分片文件后,存储空间才能成功删除。