Todos los productos
Search
Centro de documentos

Object Storage Service:Carga por anexión (SDK de iOS)

Última actualización: Sep 22, 2026

La carga por anexión utiliza la operación de API AppendObject de Object Storage Service (OSS) para agregar contenido a un objeto anexable existente.

Nota

Los objetos que se cargan con la operación AppendObject son objetos anexables. Los objetos que se cargan con la operación PutObject son objetos normales.

Consideraciones

  • Antes de usar los ejemplos de este tema, cree una instancia de OSSClient con un nombre de dominio personalizado o Security Token Service (STS). Para obtener más información, consulte Initialization (iOS SDK).

    Nota

    La región del bucket que usted crea se determina según el endpoint especificado en la configuración de inicialización.

  • En este tema, las credenciales de acceso se obtienen de variables de entorno. Para obtener más información, consulte 配置访问凭证.

  • Si el objeto no existe, la llamada a la operación AppendObject crea un nuevo objeto anexable.

  • Si el objeto ya existe:

    • Cuando el objeto es anexable y la posición de anexión especificada coincide con la longitud actual del objeto, el contenido se agrega al final de este.

    • Cuando el objeto es anexable, pero la posición de anexión especificada no coincide con la longitud actual del objeto, se genera la excepción PositionNotEqualToLength.

    • Cuando el objeto no es anexable, como un objeto normal que se cargó mediante carga simple, se genera la excepción ObjectNotAppendable.

  • La operación CopyObject no es compatible con los objetos anexables.

Permisos

De forma predeterminada, una cuenta de Alibaba Cloud tiene todos los permisos. Los usuarios o roles de RAM asociados a una cuenta de Alibaba Cloud no cuentan con ningún permiso de manera predeterminada. La cuenta de Alibaba Cloud o el administrador de la cuenta debe otorgar los permisos de operación mediante RAM policies o Bucket Policy.

API

Action

Descripción

AppendObject

oss:PutObject

Esta operación permite cargar un objeto y anexarlo a uno existente.

oss:PutObjectTagging

Este permiso es obligatorio cuando se especifican etiquetas de objeto mediante x-oss-tagging durante la carga por anexión.

Código de ejemplo

A continuación se muestra un ejemplo de código para ejecutar una carga por anexión.

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;
}];

Referencias