O append upload usa a operação da API AppendObject do Object Storage Service (OSS) para adicionar conteúdo a um objeto appendable existente.
Os objetos enviados pela operação AppendObject são objetos appendable. Os objetos enviados pela operação PutObject são objetos normais.
Considerações
-
Antes de usar os exemplos deste tópico, crie uma instância do OSSClient com um nome de domínio personalizado ou o Security Token Service (STS). Para obter mais informações, consulte Initialization (iOS SDK).
NotaPara definir a região do bucket criado, especifique o endpoint na configuração de inicialização.
Neste tópico, utilize variáveis de ambiente para obter as credenciais de acesso. Para obter mais informações, consulte 配置访问凭证.
Se o objeto não existir, a operação AppendObject cria um novo objeto appendable.
-
Se o objeto já existir:
Se for um objeto appendable e a posição de acréscimo informada corresponder ao comprimento atual do objeto, o sistema adiciona o conteúdo ao final do objeto.
Se for um objeto appendable, mas a posição de acréscimo informada não corresponder ao comprimento atual do objeto, o sistema lança a exceção PositionNotEqualToLength.
Se o objeto não for appendable, como um objeto normal enviado por meio de upload simples, o sistema lança a exceção ObjectNotAppendable.
A operação CopyObject não é compatível com objetos appendable.
Permissões
Por padrão, uma conta Alibaba Cloud tem permissões totais. Os usuários RAM ou as funções RAM sob uma conta Alibaba Cloud não têm nenhuma permissão por padrão. A conta Alibaba Cloud ou o administrador da conta deve conceder as permissões de operação por meio de RAM policies ou Bucket Policy.
|
API |
Ação |
Descrição |
|
AppendObject |
|
Use esta operação para enviar um objeto adicionando-o a um objeto existente. |
|
|
Ao enviar um objeto por acréscimo, se você especificar tags do objeto por meio de x-oss-tagging, essa permissão é obrigatória. |
Código de exemplo
O código a seguir mostra um exemplo de 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 da API
AppendObject, consulte AppendObject.Para obter mais informações, consulte How to initialize an OSSClient instance.