全部产品
Search
文档中心

Object Storage Service:Upload sederhana (iOS SDK)

更新时间:Nov 30, 2025

Topik ini menjelaskan cara mengunggah file dari memori atau file lokal. Anda juga dapat menggunakan Validasi MD5 untuk memastikan integritas data selama proses upload.

Catatan penggunaan

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

Catatan

Wilayah bucket bergantung pada titik akhir yang ditentukan saat inisialisasi.

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

PutObject

oss:PutObject

Mengunggah objek.

oss:PutObjectTagging

Saat mengunggah objek, jika Anda menentukan tag objek melalui x-oss-tagging, izin ini diperlukan.

kms:GenerateDataKey

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

kms:Decrypt

Unggah file dari memori atau file lokal

Saat mengunggah file, Anda dapat langsung mengunggah OSSData atau mengunggah file menggunakan NSURL.

OSSPutObjectRequest * put = [OSSPutObjectRequest new];

// Tentukan nama bucket. Misalnya, examplebucket.
put.bucketName = @"examplebucket";
// Tentukan path lengkap objek. Misalnya, exampledir/exampleobject.txt. Path lengkap tidak boleh mengandung nama bucket.
put.objectKey = @"exampledir/exampleobject.txt";
put.uploadingFileURL = [NSURL fileURLWithPath:@"<filePath>"];
// put.uploadingData = <NSData *>; // Unggah NSData secara langsung.

// (Opsional) Atur progres upload.
put.uploadProgress = ^(int64_t bytesSent, int64_t totalByteSent, int64_t totalBytesExpectedToSend) {
    // Panjang upload saat ini, panjang total yang telah diunggah, dan panjang total yang akan diunggah.
    NSLog(@"%lld, %lld, %lld", bytesSent, totalByteSent, totalBytesExpectedToSend);
};
// Konfigurasikan bidang opsional.
// put.contentType = @"application/octet-stream";
// Tetapkan Content-MD5.
// put.contentMd5 = @"eB5eJF1ptWaXm4bijSPyxw==";
// Tetapkan codec objek.
// put.contentEncoding = @"identity";
// Tetapkan format tampilan objek.
// put.contentDisposition = @"attachment";
// Anda dapat menetapkan metadata objek atau Header HTTP saat mengunggah file.
// NSMutableDictionary *meta = [NSMutableDictionary dictionary];
// Tetapkan metadata file.
// [meta setObject:@"value" forKey:@"x-oss-meta-name1"];
// Tetapkan izin akses objek ke private.
// [meta setObject:@"private" forKey:@"x-oss-object-acl"];
// Tetapkan kelas penyimpanan objek ke Standard.
// [meta setObject:@"Standard" forKey:@"x-oss-storage-class"];
// Timpa objek tujuan yang memiliki nama yang sama.
// [meta setObject:@"true" forKey:@"x-oss-forbid-overwrite"];
// Tentukan tag objek. Anda dapat menentukan beberapa tag.
// [meta setObject:@"a:1" forKey:@"x-oss-tagging"];
// Tentukan algoritma enkripsi sisi server yang digunakan OSS untuk membuat objek tujuan.
// [meta setObject:@"AES256" 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.
// [meta setObject:@"9468da86-3509-4f8d-a61e-6eab1eac****" forKey:@"x-oss-server-side-encryption-key-id"];
// put.objectMeta = meta;
OSSTask * putTask = [client putObject:put];

[putTask continueWithBlock:^id(OSSTask *task) {
    if (!task.error) {
        NSLog(@"upload object success!");
    } else {
        NSLog(@"upload object failed, error: %@" , task.error);
    }
    return nil;
}];
// waitUntilFinished memblokir thread saat ini, tetapi tidak memblokir proses upload.
// [putTask waitUntilFinished];
// [put cancel];

Unggah file ke direktori

OSS tidak memiliki konsep folder. Semua elemen disimpan sebagai file. OSS menyediakan cara untuk mensimulasikan folder. Untuk mensimulasikan folder, buat file yang namanya diakhiri dengan garis miring (/). Hal ini memungkinkan Anda mengunggah file ke direktori tersebut. Konsol menampilkan file yang diakhiri dengan garis miring (/) sebagai folder.

Misalnya, saat Anda mengunggah file, jika Anda mengatur objectKey ke folder/subfolder/file, file tersebut diunggah ke direktori folder/subfolder/.

Catatan

Path default adalah Direktori root. Path tidak perlu diawali dengan garis miring (/).

Tetapkan contentType dan gunakan validasi MD5 selama upload

Untuk memastikan bahwa data yang dikirim oleh client sama dengan data yang diterima oleh server OSS, Anda dapat menambahkan nilai contentMd5 saat mengunggah file. Server OSS menggunakan nilai MD5 ini untuk validasi. Anda juga dapat secara eksplisit menentukan contentType saat mengunggah file. Jika Anda tidak menentukan contentType, SDK akan secara otomatis menentukan tipe konten berdasarkan nama file atau objectKey upload.

Penting

Validasi MD5 dapat menurunkan performa.

SDK menyediakan metode praktis untuk menghitung nilai Base64 dan contentMd5.

OSSPutObjectRequest * put = [OSSPutObjectRequest new];
// Tentukan nama bucket. Misalnya, examplebucket.
put.bucketName = @"examplebucket";
// Tentukan path lengkap objek. Misalnya, exampledir/exampleobject.txt. Path lengkap tidak boleh mengandung nama bucket.
put.objectKey = @"exampledir/exampleobject.txt";
put.uploadingFileURL = [NSURL fileURLWithPath:@"<filePath>"];
// Unggah NSData secara langsung.
// put.uploadingData = <NSData *>; 
// (Opsional) Tetapkan contentType.
put.contentType = @"application/octet-stream";
// (Opsional) Tetapkan validasi contentMd5.
// Tetapkan validasi contentMd5 untuk path file.
put.contentMd5 = [OSSUtil base64Md5ForFilePath:@"<filePath>"]; 
// Tetapkan validasi contentMd5 untuk data biner.
// put.contentMd5 = [OSSUtil base64Md5ForData:<NSData *>];
// (Opsional) Tetapkan progres upload.
put.uploadProgress = ^(int64_t bytesSent, int64_t totalByteSent, int64_t totalBytesExpectedToSend) {
    // Panjang upload saat ini, panjang total yang telah diunggah, dan panjang total yang akan diunggah.
    NSLog(@"%lld, %lld, %lld", bytesSent, totalByteSent, totalBytesExpectedToSend);
};
OSSTask * putTask = [client putObject:put];
[putTask continueWithBlock:^id(OSSTask *task) {
    if (!task.error) {
        NSLog(@"upload object success!");
    } else {
        NSLog(@"upload object failed, error: %@" , task.error);
    }
    return nil;
}];
// waitUntilFinished memblokir thread saat ini, tetapi tidak memblokir proses upload.
// [putTask waitUntilFinished];
// [put cancel];

Referensi

  • Untuk kode contoh lengkap upload sederhana, lihat contoh GitHub.

  • Untuk informasi selengkapnya tentang Operasi API untuk upload sederhana, lihat PutObject.

  • Untuk informasi selengkapnya tentang cara menginisialisasi instans OSSClient, lihat Inisialisasi instans OSSClient.