OSS tidak mendukung pengubahan nama objek secara langsung. Untuk mengganti nama objek dalam bucket yang sama, panggil operasi CopyObject untuk menyalin objek sumber ke objek tujuan, lalu panggil operasi DeleteObject untuk menghapus objek sumber.
Catatan penggunaan
Sebelum menjalankan kode contoh dalam topik ini, buat instans OSSClient menggunakan nama domain kustom atau Security Token Service (STS). Untuk informasi selengkapnya, lihat Inisialisasi (iOS SDK).
CatatanWilayah bucket ditentukan oleh wilayah titik akhir yang ditetapkan dalam konfigurasi inisialisasi.
Kode contoh
Kode berikut menunjukkan cara mengubah nama objek dari srcobject.txt menjadi destobject.txt di bucket examplebucket.
// Tentukan nama bucket.
NSString *bucketName = @"examplebucket";
// Tentukan path lengkap objek sumber. Jangan sertakan nama bucket. Contohnya, srcobject.txt.
NSString *sourceObjectKey = @"sourceObjectKey";
// Tentukan path lengkap objek tujuan. Jangan sertakan nama bucket. Contohnya, destobject.txt.
NSString *objectKey = @"destobject.txt";
[[[OSSTask taskWithResult:nil] continueWithBlock:^id _Nullable(OSSTask * _Nonnull task) {
// Salin objek srcobject.txt ke destobject.txt dalam bucket yang sama.
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;
}
// Hapus objek srcobject.txt.
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;
}];OSS tidak mendukung pengubahan nama folder secara langsung. Untuk mengganti nama folder, terapkan metode yang sama untuk mengganti nama setiap subdirektori dan objek di dalam folder tersebut.
Referensi
Untuk informasi selengkapnya mengenai operasi API yang digunakan untuk mengganti nama file, lihat CopyObject dan DeleteObject.