すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:オブジェクトの名前変更

最終更新日:Aug 22, 2024

オブジェクトの名前を直接変更することはできません。 バケット内のオブジェクトの名前を変更するには、CopyObject操作を呼び出してソースオブジェクトを宛先オブジェクトにコピーし、次にDeleteObject操作を呼び出してソースオブジェクトを削除します。

使用上の注意

  • このトピックのサンプルコードを実行する前に、カスタムドメイン名やSecurity Token Service (STS) などの方法を使用してOSSClientインスタンスを作成する必要があります。 詳細については、「初期化」をご参照ください。

    説明

    バケットのリージョンは、初期化用に指定されたエンドポイントによって決まります。

サンプルコード

次のコードでは、examplebucketバケット内のsrcobject.txtという名前のオブジェクトの名前をdestobject.txtに変更する方法の例を示します。

// Specify the name of the bucket. 
NSString *bucketName = @"examplebucket";
// Specify the full path of the source object. Do not include the bucket name in the full path. Example: srcobject.txt. 
NSString *sourceObjectKey = @"sourceObjectKey";
// Specify the full path of the destination object. Do not include the bucket name in the full path. Example: destobject.txt. 
NSString *objectKey = @"destobject.txt";
[[[OSSTask taskWithResult:nil] continueWithBlock:^id _Nullable(OSSTask * _Nonnull task) {
    // Copy the srcobject.txt object to the destobject.txt object in the same bucket. 
    OSSCopyObjectRequest *copyRequest = [OSSCopyObjectRequest new];
    copyRequest.bucketName = bucketName;
    copyRequest.sourceBucketName = bucketName;
    copyRequest.sourceObjectKey = sourceObjectKey;
    copyRequest.objectKey = objectKey;
    OSSTask *copyTask = [client copyObject:copyRequest];
    [copyTask waitUntilFinished];
    if (copyTask.error) {
        return copyTask;
    }
    // Delete the srcobject.txt object. 
    OSSDeleteObjectRequest *deleteObject = [OSSDeleteObjectRequest new];
    deleteObject.bucketName = bucketName;
    deleteObject.objectKey = sourceObjectKey;
    OSSTask *deleteTask = [client deleteObject:deleteObject];
    [deleteTask waitUntilFinished];
    if (deleteTask.error) {
        return deleteTask;
    }
    return nil;
}] continueWithBlock:^id _Nullable(OSSTask * _Nonnull task) {
    if (task.error) {
        NSLog(@"rename fail! error: %@", task.error);
    } else {
        NSLog(@"rename success!");
    }
    return nil;
}];
説明

ディレクトリの名前も直接変更できません。 ディレクトリの名前を変更するには、上記の例に従って、ディレクトリ内のサブディレクトリとオブジェクトの名前を1つずつ変更します。

関連ドキュメント

オブジェクトの名前を変更するために呼び出すAPI操作の詳細については、「CopyObject」および「DeleteObject」をご参照ください。