全部产品
Search
文档中心

对象存储 OSS:iOS管理文件访问权限

更新时间:Aug 26, 2024

文件访问权限包括继承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];

相关文档