Tous les produits
Search
Centre de documentation

Object Storage Service:Rename objects (iOS SDK)

Dernière mise à jour :Aug 18, 2026

OSS ne permet pas de renommer directement les objets. Pour renommer un objet, copiez-le puis supprimez l'original : appelez CopyObject pour créer un nouvel objet avec le nom souhaité, puis appelez DeleteObject pour supprimer l'objet source.

Notes

  • Avant d'exécuter l'exemple de code, créez une instance OSSClient en utilisant un nom de domaine personnalisé ou Security Token Service (STS). Pour plus d'informations, consultez la rubrique Initialisation (SDK iOS).

    Remarque

    La région du bucket correspond à celle de l'endpoint spécifiée dans la configuration d'initialisation.

Exemple de code

L'exemple de code suivant renomme l'objet srcobject.txt en destobject.txt dans le bucket examplebucket.

// Specify the bucket name.
NSString *bucketName = @"examplebucket";
// Specify the full path of the source object. Do not include the bucket name. For example, srcobject.txt.
NSString *sourceObjectKey = @"sourceObjectKey";
// Specify the full path of the destination object. Do not include the bucket name. For example, destobject.txt.
NSString *objectKey = @"destobject.txt";
[[[OSSTask taskWithResult:nil] continueWithBlock:^id _Nullable(OSSTask * _Nonnull task) {
    // Copy the srcobject.txt object to destobject.txt 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;
}];
Remarque

OSS ne permet pas de renommer directement les dossiers. Pour renommer un dossier, appliquez la même méthode à chaque sous-répertoire et objet qu'il contient.

Références

Pour plus d'informations sur les opérations API permettant de renommer un objet, consultez les rubriques CopyObject et DeleteObject.