檔案存取權限包括繼承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執行個體。