全部產品
Search
文件中心

Object Storage Service: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];

相關文檔