O append upload usa a operação de API AppendObject do Object Storage Service (OSS) para adicionar conteúdo a um objeto anexável existente.
Objetos enviados com a operação AppendObject são objetos anexáveis. Objetos enviados com a operação PutObject são objetos normais.
Considerações
-
Antes de usar os exemplos deste tópico, crie uma instância OSSClient com um nome de domínio personalizado ou o Security Token Service (STS). Para mais informações, consulte Inicialização (iOS SDK).
NotaA região do bucket criado é definida pelo endpoint especificado na configuração de inicialização.
Neste tópico, as credenciais de acesso são obtidas de variáveis de ambiente. Para mais detalhes, consulte Configurar credenciais de acesso.
Se o objeto não existir, a chamada à operação AppendObject cria um novo objeto anexável.
-
Se o objeto já existir:
Se o objeto for anexável e a posição de anexação especificada corresponder ao tamanho atual do objeto, o conteúdo será adicionado ao final dele.
Se o objeto for anexável, mas a posição de anexação informada não coincidir com o tamanho atual, o sistema lança a exceção PositionNotEqualToLength.
Se o objeto não for anexável, como um objeto normal enviado via upload simples, o sistema lança a exceção ObjectNotAppendable.
A operação CopyObject não oferece suporte a objetos anexáveis.
Permissões
Por padrão, uma conta Alibaba Cloud tem permissões totais. Usuários RAM ou funções RAM vinculados a essa conta não têm permissões inicialmente. A conta Alibaba Cloud ou o administrador da conta deve conceder as permissões operacionais por meio de políticas do RAM ou Bucket Policy.
|
API |
Ação |
Descrição |
|
AppendObject |
|
Use esta operação para enviar um objeto anexando-o a um objeto existente. |
|
|
Essa permissão é necessária ao especificar tags de objeto via x-oss-tagging durante o envio por anexação. |
Código de exemplo
O código abaixo demonstra como fazer um append upload.
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;
}];
Referências
Para obter a descrição da operação de API
AppendObject, consulte AppendObject.Para mais informações, consulte Como inicializar uma instância OSSClient.