Tous les produits
Search
Centre de documentation

Object Storage Service:Append upload (iOS SDK)

Dernière mise à jour :Aug 18, 2026

Le chargement par ajout utilise l'opération d'API AppendObject d'Object Storage Service (OSS) pour ajouter du contenu à un objet de type ajout existant.

Remarque

Les objets envoyés via l'opération AppendObject sont des objets de type ajout. Les objets envoyés via l'opération PutObject sont des objets normaux.

Considérations

  • Avant d'utiliser les exemples de cette rubrique, créez une instance OSSClient en utilisant un nom de domaine personnalisé ou Security Token Service (STS). Pour plus d'informations, consultez Initialisation (SDK iOS).

    Remarque

    La région du bucket que vous créez est déterminée par l'endpoint spécifié dans la configuration d'initialisation.

  • Dans cette rubrique, les identifiants d'accès sont obtenus à partir des variables d'environnement. Pour plus d'informations, consultez Configuration des informations d'identification d'accès.

  • Si l'objet n'existe pas, l'appel de l'opération AppendObject crée un nouvel objet de type ajout.

  • Si l'objet existe déjà :

    • Si l'objet est de type ajout et que la position d'ajout spécifiée correspond à la longueur actuelle de l'objet, le contenu est ajouté à la fin de l'objet.

    • Si l'objet est de type ajout mais que la position d'ajout spécifiée ne correspond pas à la longueur actuelle de l'objet, une exception PositionNotEqualToLength est levée.

    • Si l'objet n'est pas de type ajout, par exemple un objet normal envoyé via un chargement simple, l'exception ObjectNotAppendable est levée.

  • L'opération CopyObject n'est pas prise en charge pour les objets de type ajout.

Autorisations

Par défaut, un compte Alibaba Cloud dispose de toutes les autorisations. Les utilisateurs RAM ou les rôles RAM associés à un compte Alibaba Cloud ne disposent d'aucune autorisation par défaut. Le compte Alibaba Cloud ou l'administrateur du compte doit accorder les autorisations d'opération via des politiques RAM ou une stratégie de bucket.

API

Action

Description

AppendObject

oss:PutObject

Appelez cette opération pour envoyer un objet en l'ajoutant à un objet existant.

oss:PutObjectTagging

Lors de l'envoi d'un objet par ajout à un objet existant, si vous spécifiez des tags d'objet via x-oss-tagging, cette autorisation est requise.

Exemple de code

Le code suivant montre comment effectuer un chargement par ajout.

OSSAppendObjectRequest * append = [OSSAppendObjectRequest new];
// Configure the required fields. `bucketName` specifies the name of the bucket. `objectKey`, which is equivalent to `objectName`, specifies the full path of the object to which you want to append data. The path must include the file extension, for example, `abc/efg/123.jpg`.
append.bucketName = @"<bucketName>";
append.objectKey = @"<objectKey>";
// Specify the position for the first append upload.
append.appendPosition = 0; 
NSString * docDir = [self getDocumentDirectory];
append.uploadingFileURL = [NSURL fileURLWithPath:@"<yourLocalFilePath>"];
// The following fields are optional.
append.uploadProgress = ^(int64_t bytesSent, int64_t totalByteSent, int64_t totalBytesExpectedToSend) {
    NSLog(@"%lld, %lld, %lld", bytesSent, totalByteSent, totalBytesExpectedToSend);
};
// append.contentType = @"";
// append.contentMd5 = @"";
// append.contentEncoding = @"";
// append.contentDisposition = @"";
OSSTask * appendTask = [client appendObject:append];
[appendTask continueWithBlock:^id(OSSTask *task) {
    NSLog(@"objectKey: %@", append.objectKey);
    if (!task.error) {
        NSLog(@"append object success!");
        OSSAppendObjectResult * result = task.result;
        NSString * etag = result.eTag;
        long nextPosition = result.xOssNextAppendPosition;
    } else {
        NSLog(@"append object failed, error: %@" , task.error);
    }
    return nil;
}];

Références