全部产品
Search
文档中心

Object Storage Service:Menyalin file (iOS SDK)

更新时间:Dec 06, 2025

Topik ini menjelaskan cara menyalin objek dalam satu bucket atau antar bucket di wilayah yang sama.

Catatan

  • Sebelum menggunakan contoh dalam topik ini, buat instans OSSClient melalui nama domain kustom, Security Token Service (STS), atau metode lainnya. Untuk informasi selengkapnya, lihat Inisialisasi (iOS SDK).

  • Saat menyalin file, Anda harus memiliki izin baca pada file sumber dan izin baca/tulis pada bucket tujuan.

  • Operasi salin lintas-wilayah tidak didukung. Misalnya, Anda tidak dapat menyalin file dari bucket di wilayah China (Hangzhou) ke bucket di wilayah China (Qingdao).

  • Ukuran file yang akan disalin tidak boleh melebihi 1 GB.

Izin

Secara default, Akun Alibaba Cloud memiliki izin penuh. Pengguna RAM atau Peran RAM di bawah Akun Alibaba Cloud tidak memiliki izin apa pun secara default. Akun Alibaba Cloud atau administrator akun harus memberikan izin operasi melalui RAM Policy atau Kebijakan bucket.

API

Action

Definisi

CopyObject

oss:GetObject

Menyalin objek dalam satu bucket atau antar bucket di wilayah yang sama.

oss:PutObject

oss:GetObjectVersion

Jika Anda menentukan versi objek sumber melalui versionId, izin ini juga diperlukan.

oss:GetObjectTagging

Jika Anda menyalin tag objek melalui x-oss-tagging, izin-izin ini diperlukan.

oss:PutObjectTagging

oss:GetObjectVersionTagging

Jika Anda menentukan tag dari versi tertentu objek sumber melalui versionId, izin ini juga diperlukan.

kms:GenerateDataKey

Saat menyalin objek, jika metadata objek tujuan berisi X-Oss-Server-Side-Encryption: KMS, kedua izin ini diperlukan.

kms:Decrypt

Kode contoh

Kode berikut menunjukkan contoh cara menyalin file:

OSSCopyObjectRequest * copy = [OSSCopyObjectRequest new];
// Tentukan nama bucket sumber.
copy.sourceBucketName = @"sourcebucket";
// Tentukan path lengkap objek di bucket sumber.
copy.sourceObjectKey = @"dir1/srcobject.txt";
// Tentukan nama bucket tujuan.
copy.bucketName = @"destbucket";
// Tentukan path lengkap objek di bucket tujuan.
copy.objectKey = @"dir2/destobject.txt";
NSMutableDictionary *objectMeta = [NSMutableDictionary dictionary];
// Atur daftar kontrol akses (ACL). Pada contoh ini, nilainya diatur ke public-read.
[objectMeta setValue:@"public-read" forKey:@"x-oss-object-acl"];
// Atur kelas penyimpanan. Pada contoh ini, nilainya diatur ke Standard.
[objectMeta setValue:@"Standard" forKey:@"x-oss-storage-class"];
// Tentukan apakah objek dengan nama yang sama akan ditimpa. Jika Anda tidak menentukan x-oss-forbid-overwrite, objek akan ditimpa secara default.
// Jika Anda mengatur x-oss-forbid-overwrite ke false, objek dapat ditimpa. Jika Anda mengatur x-oss-forbid-overwrite ke true, objek tidak dapat ditimpa. Jika objek dengan nama yang sama sudah ada, kesalahan akan dilaporkan.
[objectMeta setValue:@"true" forKey:@"x-oss-forbid-overwrite"];
// Operasi salin hanya dilakukan jika ETag objek sumber sesuai dengan ETag yang Anda berikan.
[objectMeta setValue:@"5B3C1A2E053D763E1B002CC607C5****" forKey:@"x-oss-copy-source-if-match"];
// Operasi salin hanya dilakukan jika ETag objek sumber tidak sesuai dengan ETag yang Anda berikan.
[objectMeta setValue:@"5B3C1A2E053D763E1B002CC607C5****" forKey:@"x-oss-copy-source-if-none-match"];
// Operasi salin hanya dilakukan jika objek terakhir dimodifikasi pada atau sebelum 2021-12-09T07:01:56.000Z.
[objectMeta setValue:@"2021-12-09T07:01:56.000Z" forKey:@"x-oss-copy-source-if-unmodified-since"];
// Operasi salin hanya dilakukan jika objek terakhir dimodifikasi setelah 2021-12-15T07:01:56.000Z.
[objectMeta setValue:@"2021-12-15T07:01:56.000Z" forKey:@"x-oss-copy-source-if-modified-since"];
// Salin metadata dari objek sumber ke objek tujuan.
[objectMeta setValue:@"COPY" forKey:@"x-oss-metadata-directive"];
// Salin tag dari objek sumber ke objek tujuan.
[objectMeta setValue:@"Copy" forKey:@"x-oss-tagging-directive"];
// Tentukan algoritma enkripsi sisi server yang digunakan OSS untuk membuat objek tujuan.
[objectMeta setValue:@"KMS" forKey:@"x-oss-server-side-encryption"];
// Kunci master pelanggan (CMK) yang dikelola oleh KMS. Parameter ini hanya berlaku ketika x-oss-server-side-encryption diatur ke KMS.
[objectMeta setValue:@"9468da86-3509-4f8d-a61e-6eab1eac****" forKey:@"x-oss-server-side-encryption-key-id"];
copy.objectMeta = objectMeta;


OSSTask * task = [client copyObject:copy];
[task continueWithBlock:^id(OSSTask *task) {
    if (!task.error) {
        NSLog(@"Salin objek berhasil!");
    } else {
        NSLog(@"Salin objek gagal. Error: %@" , task.error);
    }
    return nil;
}];
//   Blokir thread saat ini untuk menunggu tugas selesai.
//   [task waitUntilFinished];

Referensi

Untuk informasi selengkapnya tentang operasi API CopyObject, lihat CopyObject.