全部產品
Search
文件中心

Object Storage Service:iOS對象標籤

更新時間:Aug 27, 2024

OSS支援使用標籤對儲存空間(Bucket)中的檔案(Object)進行分類。本文介紹如何設定、擷取以及刪除Object標籤。

注意事項

使用本文樣本前您需要先通過自訂網域名、STS等方式建立OSSClient,具體請參見初始化

設定對象標籤

上傳Object時設定對象標籤

以下代碼用於上傳Object時設定對象標籤。

OSSPutObjectRequest * put = [OSSPutObjectRequest new];

// 填寫Bucket名稱,例如examplebucket。
put.bucketName = @"examplebucket";
// 填寫檔案完整路徑,例如exampledir/exampleobject.txt。Object完整路徑中不能包含Bucket名稱。
put.objectKey = @"exampledir/exampleobject.txt";
put.uploadingFileURL = [NSURL fileURLWithPath:@"<filePath>"];
// 設定對象標籤資訊,例如標籤的key為owner,value為John。
NSDictionary *tagging = @{@"owner": @"John"};
put.objectMeta = @{@"x-oss-tagging": [OSSUtil populateQueryStringFromParameter:tagging]};

// (可選)設定上傳進度。
put.uploadProgress = ^(int64_t bytesSent, int64_t totalByteSent, int64_t totalBytesExpectedToSend) {
    // 指定當前上傳長度、當前已經上傳總長度、待上傳的總長度。
    NSLog(@"%lld, %lld, %lld", bytesSent, totalByteSent, totalBytesExpectedToSend);
};
OSSTask * putTask = [client putObject:put];
[putTask continueWithBlock:^id(OSSTask *task) {
    if (!task.error) {
        NSLog(@"upload object success!");
    } else {
        NSLog(@"upload object failed, error: %@" , task.error);
    }
    return nil;
}];
// [putTask waitUntilFinished];
// [put cancel];

為已上傳Object添加或更改對象標籤

以下代碼用於為已上傳Object添加或更改對象標籤。

OSSPutObjectTaggingRequest *putTaggingRequest = [OSSPutObjectTaggingRequest new];
// 填寫Bucket名稱,例如examplebucket。
putTaggingRequest.bucketName = @"examplebucket";
// 填寫Object完整路徑,例如exampledir/exampleobject.txt。Object完整路徑中不能包含Bucket名稱。
putTaggingRequest.objectKey = @"exampledir/exampleobject.txt";
// 設定標籤資訊。
NSDictionary *tags = @{@"key1":@"value1", @"key2":@"value2"};
putTaggingRequest.tags = tags;
OSSTask * putTask= [client putObjectTagging:putTaggingRequest];
[putTask continueWithBlock:^id _Nullable(OSSTask * _Nonnull task) {
    if (task.error) {
        NSLog(@"error: %@", task.error);
    } else {
        NSLog(@"put tagging success");
    }
    return nil;
}];
// [putTask waitUntilFinished];

拷貝Object時設定對象標籤

以下代碼用於拷貝Object時設定對象標籤。

OSSCopyObjectRequest * copy = [OSSCopyObjectRequest new];
// 填寫源Bucket名稱。
copy.sourceBucketName = @"sourceBucketName";
// 填寫源objectKey。
copy.sourceObjectKey = @"sourceObjectKey";
// 填寫目標Bucket名稱。
copy.bucketName = @"bucketName";
// 填寫目標objectKey。
copy.objectKey = @"objectKey";
// 設定對象標籤資訊。
NSDictionary *tagging = @{@"owner": @"John"};
copy.objectMeta = @{
    @"x-oss-tagging": [OSSUtil populateQueryStringFromParameter:tagging],
    @"x-oss-tagging-directive": @"Replace"
};

OSSTask * task = [client copyObject:copy];
[task continueWithBlock:^id(OSSTask *task) {
    if (task.error) {
        NSLog(@"error: %@", task.error);
    } else {
        NSLog(@"copy object success");
    }
    return nil;
}];
// [task waitUntilFinished];

為軟連結檔案設定對象標籤

以下代碼用於為軟連結檔案設定對象標籤。

OSSPutSymlinkRequest * putSymlinkRequest = [OSSPutSymlinkRequest new];
// 填寫Bucket名稱。
putSymlinkRequest.bucketName = @"examplebucket";
// 填寫軟連結名稱。
putSymlinkRequest.objectKey = @"examplesymlink";
// 填寫軟連結指定的Object完整路徑。Object完整路徑中不能包含Bucket名稱。
putSymlinkRequest.targetObjectName = @"exampleobject.txt";
// 設定對象標籤資訊。
NSDictionary *tagging = @{@"owner": @"John"};
putSymlinkRequest.objectMeta = @{
    @"x-oss-tagging": [OSSUtil populateQueryStringFromParameter:tagging],
};

OSSTask * putSymlinktask = [client putSymlink:putSymlinkRequest];
[putSymlinktask continueWithBlock:^id(OSSTask *task) {
    if (!task.error) {
        NSLog(@"put symlink success");
    } else {
        NSLog(@"put symlink failed, error: %@", task.error);
    }
    return nil;
}];
// [putSymlinktask waitUntilFinished];

擷取Object標籤資訊

以下代碼用於擷取Object的標籤資訊。

OSSGetObjectTaggingRequest *getTaggingRequest = [OSSGetObjectTaggingRequest new];
// 填寫Bucket名稱。
getTaggingRequest.bucketName = @"examplebucket";
// 填寫Object名稱。
getTaggingRequest.objectKey = @"exampledir/exampleobject.txt";
OSSTask * getTask = [client getObjectTagging:getTaggingRequest];
// 擷取Object的標籤資訊。
[getTask continueWithBlock:^id _Nullable(OSSTask * _Nonnull task) {
    if (!task.error) {
        OSSGetObjectTaggingResult *result = task.result;
        for (NSString *key in [result.tags allKeys]) {
            NSLog(@"tagging %@: %@", key, result.tags[key]);
        }
    } else {
        NSLog(@"get object tagging fail! error: %@", task.error);
    }

    return nil;
}];
// [getTask waitUntilFinished];

刪除Object標籤資訊

以下代碼用於刪除Object的標籤資訊。

OSSDeleteObjectTaggingRequest *deleteTaggingRequest = [OSSDeleteObjectTaggingRequest new];
// 填寫Bucket名稱。
deleteTaggingRequest.bucketName = @"examplebucket";
// 填寫Object名稱。
deleteTaggingRequest.objectKey = @"exampledir/exampleobject.txt";
OSSTask *deleteTask = [client deleteObjectTagging:deleteTaggingRequest];
// 刪除Object的標籤資訊。
[deleteTask continueWithBlock:^id _Nullable(OSSTask * _Nonnull task) {
    if (!task.error) {
        NSLog(@"delete object tagging success");
    } else {
        NSLog(@"delete object tagging fail! error: %@", task.error);
    }
    return nil;
}];
// [deleteTask waitUntilFinished];

相關文檔