All Products
Search
Document Center

Object Storage Service:Unggah Sederhana Menggunakan OSS SDK untuk C#

Last Updated:Nov 09, 2025

Topik ini menjelaskan cara dengan cepat mengunggah file lokal ke Object Storage Service (OSS) menggunakan metode unggah sederhana. Metode ini mudah digunakan dan cocok untuk skenario di mana Anda perlu dengan cepat mengunggah file lokal.

Pertimbangan

Kode contoh dalam topik ini menggunakan ID Wilayah cn-hangzhou dari Wilayah China (Hangzhou) sebagai contoh dan menggunakan titik akhir publik secara default. Jika Anda ingin mengakses OSS dari layanan Alibaba Cloud lainnya di wilayah yang sama dengan OSS, gunakan titik akhir internal. Untuk informasi lebih lanjut tentang pemetaan antara wilayah dan titik akhir yang didukung oleh OSS, lihat Wilayah dan Titik Akhir OSS.

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 Kebijakan RAM atau Kebijakan Bucket.

API

Tindakan

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 lokal

Jika Anda mengunggah objek yang namanya sama dengan objek yang sudah ada dan dapat diakses, objek yang sudah ada akan ditimpa oleh objek yang diunggah.

Tabel berikut mencantumkan parameter umum yang harus dikonfigurasi saat mengunggah objek.

Parameter

Deskripsi

bucket

Nama bucket.

Nama bucket harus mematuhi konvensi berikut:

  • Nama hanya boleh berisi huruf kecil, angka, dan tanda hubung (-).

  • Nama harus dimulai dan diakhiri dengan huruf kecil atau angka.

  • Nama harus terdiri dari 3 hingga 63 karakter.

key

Path lengkap objek. Jangan sertakan nama bucket dalam path lengkap.

Nama objek harus mematuhi konvensi penamaan berikut:

  • Gunakan pengkodean UTF-8.

  • Nama harus terdiri dari 1 hingga 1.023 karakter.

  • Nama tidak boleh dimulai dengan garis miring (/) atau backslash (\).

Kode sampel berikut menunjukkan cara mengunggah file lokal ke bucket:

using System.Text; // Impor namespace System.Text untuk menangani pengkodean karakter (seperti string yang dikodekan UTF-8)
using OSS = AlibabaCloud.OSS.V2; // Buat alias untuk Alibaba Cloud OSS SDK untuk menyederhanakan penggunaan selanjutnya

var region = "cn-hangzhou"; // Diperlukan, atur wilayah tempat bucket berada. Misalnya, jika bucket berada di Wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou
var bucket = "nama bucket Anda";  // Diperlukan, atur nama bucket target
var endpoint = null as string;  // Opsional, tentukan titik akhir untuk mengakses layanan OSS. Misalnya, jika bucket berada di Wilayah China (Hangzhou), atur titik akhir menjadi https://oss-cn-hangzhou.aliyuncs.com
var key = "kunci objek Anda"; // Diperlukan, tentukan nama objek untuk diunggah. Format: (folder/namaObjek)
var filePath = "/Users/lokasiLokalAnda/namaFileAnda"; // Diperlukan, tentukan path file lokal

// Muat konfigurasi default OSS SDK, yang secara otomatis membaca informasi kredensial (seperti AccessKey) dari variabel lingkungan
var cfg = OSS.Configuration.LoadDefault();
// Secara eksplisit atur untuk menggunakan variabel lingkungan untuk kredensial, digunakan untuk verifikasi identitas (format: OSS_ACCESS_KEY_ID, OSS_ACCESS_KEY_SECRET)
cfg.CredentialsProvider = new OSS.Credentials.EnvironmentVariableCredentialsProvider();
// Atur wilayah bucket dalam konfigurasi
cfg.Region = region;
// Jika titik akhir ditentukan, timpa titik akhir default
if(endpoint != null)
{
    cfg.Endpoint = endpoint;
}

// Buat instance klien OSS menggunakan informasi konfigurasi
using var client = new OSS.Client(cfg);

// Panggil metode PutObjectFromFileAsync untuk mengunggah file lokal
var result = await client.PutObjectFromFileAsync(new()
{
    Bucket = bucket,
    Key = key
}, filePath);

// Tampilkan hasil unggahan
Console.WriteLine("PutObjectFromFile selesai");  // Menunjukkan operasi telah selesai
Console.WriteLine($"StatusCode: {result.StatusCode}");  // Kode status HTTP
Console.WriteLine($"RequestId: {result.RequestId}");  // RequestId, digunakan untuk pemecahan masalah oleh Alibaba Cloud
Console.WriteLine("Header Respons:");  // Informasi header respons
result.Headers.ToList().ForEach(x => Console.WriteLine(x.Key + " : " + x.Value));  // Telusuri dan cetak semua header respons

Unggah array byte

using System.Text; // Impor namespace System.Text untuk menangani pengkodean karakter (seperti string yang dikodekan UTF-8)
using OSS = AlibabaCloud.OSS.V2; // Buat alias untuk Alibaba Cloud OSS SDK untuk menyederhanakan penggunaan selanjutnya

var region = "cn-hangzhou"; // Diperlukan, atur wilayah tempat bucket berada. Misalnya, jika bucket berada di Wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou
var bucket = "nama bucket Anda";  // Diperlukan, atur nama bucket target
var endpoint = null as string;  // Opsional, tentukan titik akhir untuk mengakses layanan OSS. Misalnya, jika bucket berada di Wilayah China (Hangzhou), atur titik akhir menjadi https://oss-cn-hangzhou.aliyuncs.com
var key = "kunci objek Anda"; // Diperlukan, tentukan nama objek untuk diunggah. Format: (folder/namaObjek)

// Muat konfigurasi default OSS SDK, yang secara otomatis membaca informasi kredensial (seperti AccessKey) dari variabel lingkungan
var cfg = OSS.Configuration.LoadDefault();
// Secara eksplisit atur untuk menggunakan variabel lingkungan untuk kredensial, digunakan untuk verifikasi identitas (format: OSS_ACCESS_KEY_ID, OSS_ACCESS_KEY_SECRET)
cfg.CredentialsProvider = new OSS.Credentials.EnvironmentVariableCredentialsProvider();
// Atur wilayah bucket dalam konfigurasi
cfg.Region = region;
// Jika titik akhir ditentukan, timpa titik akhir default
if(endpoint != null)
{
    cfg.Endpoint = endpoint;
}

// Buat instance klien OSS menggunakan informasi konfigurasi
using var client = new OSS.Client(cfg);

// Konten yang akan diunggah. Contoh konten: string sederhana "hello oss!", dalam skenario nyata bisa berupa aliran file, array byte, dll.
var content = "hello oss!";
// Ubah string menjadi array byte yang dikodekan UTF-8, lalu bungkus dalam MemoryStream
// MemoryStream digunakan untuk memproses aliran data di memori, cocok untuk unggahan file kecil; untuk file besar, FileStream direkomendasikan
var bodyStream = new MemoryStream(Encoding.UTF8.GetBytes(content));

// Panggil metode PutObjectAsync untuk mengunggah objek secara asinkron (memerlukan objek permintaan yang berisi Bucket, Key, dan Body)
// Metode ini akan mengunggah data dari bodyStream ke jalur Key yang ditentukan di Bucket target
var result = await client.PutObjectAsync(new OSS.Models.PutObjectRequest()
{
    Bucket = bucket,    // Nama bucket target
    Key = key,          // Kunci unik objek di bucket
    Body = bodyStream   // Aliran konten untuk diunggah (dalam hal ini, data string di memori)
});

// Tampilkan hasil unggahan
Console.WriteLine("PutObject selesai");  // Menunjukkan operasi telah selesai
Console.WriteLine($"StatusCode: {result.StatusCode}");  // Kode status HTTP
Console.WriteLine($"RequestId: {result.RequestId}");  // RequestId, digunakan untuk pemecahan masalah oleh Alibaba Cloud
Console.WriteLine("Header Respons:");  // Informasi header respons
result.Headers.ToList().ForEach(x => Console.WriteLine(x.Key + " : " + x.Value));  // Telusuri dan cetak semua header respons

Referensi

Untuk kode sampel lengkap untuk unggah sederhana, lihat putObject.cs.