文件访问权限包括继承Bucket、私有、公共读和公共读写四种。本文介绍如何获取文件(Object)的访问权限。
注意事项
使用本文示例前您需要先通过自定义域名、STS等方式新建OSSClient,具体请参见初始化。
文件访问权限
访问权限 | 描述 | 访问权限值 |
继承Bucket | 文件遵循存储空间的访问权限。 | default |
私有 | 文件的拥有者和授权用户有该文件的读写权限,其他用户没有权限操作该文件。 | private |
公共读 | 文件的拥有者和授权用户有该文件的读写权限,其他用户只有文件的读权限。请谨慎使用该权限。 | public-read |
公共读写 | 所有用户都有该文件的读写权限。请谨慎使用该权限。 | public-read-write |
文件的访问权限优先级高于存储空间的访问权限。例如存储空间的访问权限是私有,而文件的访问权限是公共读写,则所有用户都有该文件的读写权限。如果某个文件没有设置过访问权限,则遵循存储空间的访问权限。
设置文件访问权限
以下代码用于将examplebucket中exampleobject.txt的文件访问权限设置为私有(private)。
OSSPutObjectACLRequest *request = [OSSPutObjectACLRequest new];
// 填写Bucket名称,例如examplebucket。
request.bucketName = @"examplebucket";
// 填写不包含Bucket名称在内的Object完整路径,例如exampleobject.txt。
request.objectKey = @"exampleobject.txt";
/**
* 设置权限。
* public-read:公共读
* private:私有
* public-read-write:公共读写
* default:继承bucket
*/
request.acl = @"private";
OSSTask * putObjectACLTask = [client putObjectACL:request];
[putObjectACLTask continueWithBlock:^id(OSSTask *task) {
if (!task.error) {
NSLog(@"put object ACL success!");
} else {
NSLog(@"put object ACL failed, error: %@", task.error);
}
return nil;
}];
// 实现同步阻塞等待任务完成。
// [putObjectACLTask waitUntilFinished];
获取文件访问权限
以下代码用于获取examplebucket存储空间中exampleobject.txt文件的访问权限。
OSSGetObjectACLRequest *request = [OSSGetObjectACLRequest new];
// 填写Bucket名称,例如examplebucket。
request.bucketName = @"examplebucket";
// 填写不包含Bucket名称在内的Object完整路径,例如exampleobject.txt。
request.objectName = @"exampleobject.txt";
OSSTask * getObjectACLTask = [client getObjectACL:request];
[getObjectACLTask continueWithBlock:^id(OSSTask *task) {
if (!task.error) {
OSSGetObjectACLResult *result = task.result;
NSLog(@"objectACL: %@", result.grant);
} else {
NSLog(@"get object ACL failed, error: %@", task.error);
}
return nil;
}];
// 实现同步阻塞等待任务完成。
// [putObjectACLTask waitUntilFinished];
相关文档
关于设置Object访问权限的API接口说明,请参见PutObjectACL。
关于获取Object访问权限的API接口说明,请参见GetObjectACL。
关于初始化OSSClient,请参见如何初始化OSSClient实例。