This topic describes how to use append upload.

You can call the AppendObject operation to append objects. Object created by the AppendObject operation are appendable objects, whereas objects uploaded by the PutObject operation are normal objects.

The following code provides an example on how to use append upload:

OSSAppendObjectRequest * append = [OSSAppendObjectRequest new];
// Configure the required fields. objectKey is equivalent to objectName and indicates the complete path of the object that you want to upload to OSS through append upload. The path must include the file extension of the object. For example, you can set objectKey to abc/efg/123.jpg.
append.bucketName = @"<bucketName>";
append.objectKey = @"<objectKey>";
append.appendPosition = 0; // Specify the starting position to append the object.
NSString * docDir = [self getDocumentDirectory];
append.uploadingFileURL = [NSURL fileURLWithPath:@"<filepath>"];
// Configure the optional fields.
append.uploadProgress = ^(int64_t bytesSent, int64_t totalByteSent, int64_t totalBytesExpectedToSend) {
    NSLog(@"%lld, %lld, %lld", bytesSent, totalByteSent, totalBytesExpectedToSend);
};
// For more information about the optional fields, see https://docs.aliyun.com/#/pub/oss/api-reference/object&AppendObject.
// 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;
}];