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];
相關文檔
關於設定Object標籤的API介面說明,請參見PutObjectTagging。
關於擷取Object標籤的API介面說明,請參見GetObjectTagging。
關於刪除Object標籤的API介面說明,請參見DeleteObjectTagging。