O OSS não oferece suporte à renomeação direta de objetos. Para renomear um objeto, execute uma operação de cópia seguida de exclusão: chame CopyObject e crie um novo objeto com o nome desejado; depois, chame DeleteObject e exclua o objeto source.
Observações
-
crie uma instância do OSSClient com um nome de domínio personalizado ou com o Security Token Service (STS) e, em seguida, execute o código de exemplo. Para mais informações, consulte Initialization (iOS SDK).
Notaespecifique a região do endpoint na configuração de inicialização para definir a região do bucket.
Código de exemplo
O código de exemplo a seguir renomeia o objeto srcobject.txt para destobject.txt no bucket examplebucket.
// Specify the bucket name.
NSString *bucketName = @"examplebucket";
// Specify the full path of the source object. Do not include the bucket name. For example, srcobject.txt.
NSString *sourceObjectKey = @"sourceObjectKey";
// Specify the full path of the destination object. Do not include the bucket name. For example, destobject.txt.
NSString *objectKey = @"destobject.txt";
[[[OSSTask taskWithResult:nil] continueWithBlock:^id _Nullable(OSSTask * _Nonnull task) {
// Copy the srcobject.txt object to destobject.txt in the same bucket.
OSSCopyObjectRequest *copyRequest = [OSSCopyObjectRequest new];
copyRequest.bucketName = bucketName;
copyRequest.sourceBucketName = bucketName;
copyRequest.sourceObjectKey = sourceObjectKey;
copyRequest.objectKey = objectKey;
OSSTask *copyTask = [client copyObject:copyRequest];
[copyTask waitUntilFinished];
if (copyTask.error) {
return copyTask;
}
// Delete the srcobject.txt object.
OSSDeleteObjectRequest *deleteObject = [OSSDeleteObjectRequest new];
deleteObject.bucketName = bucketName;
deleteObject.objectKey = sourceObjectKey;
OSSTask *deleteTask = [client deleteObject:deleteObject];
[deleteTask waitUntilFinished];
if (deleteTask.error) {
return deleteTask;
}
return nil;
}] continueWithBlock:^id _Nullable(OSSTask * _Nonnull task) {
if (task.error) {
NSLog(@"rename fail! error: %@", task.error);
} else {
NSLog(@"rename success!");
}
return nil;
}];
O OSS não oferece suporte à renomeação direta de pastas. Para renomear uma pasta, aplique o mesmo método a cada subdiretório e objeto dentro dela.
Referências
Para mais informações sobre as operações de API para renomear um objeto, consulte CopyObject e DeleteObject.