All Products
Search
Document Center

Object Storage Service:Unggah tambahan (C# SDK V2)

Last Updated:Nov 09, 2025

Unggah tambahan memungkinkan Anda menambahkan konten ke objek yang dapat ditambahkan yang sudah ada. Topik ini menjelaskan cara melakukan unggah tambahan menggunakan OSS C# SDK.

Peringatan

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

  • Jika objek tidak ada, operasi unggah tambahan akan membuat objek yang dapat ditambahkan.

  • Jika objek ada:

    • Jika objek adalah objek yang dapat ditambahkan dan posisi tambahan yang ditentukan sama dengan panjang saat ini dari objek, konten akan ditambahkan ke akhir objek.

    • Jika objek adalah objek yang dapat ditambahkan tetapi posisi tambahan yang ditentukan tidak sama dengan panjang saat ini dari objek, pengecualian PositionNotEqualToLength akan dilemparkan.

    • Jika objek bukan objek yang dapat ditambahkan, misalnya, objek normal yang diunggah menggunakan unggah sederhana, pengecualian ObjectNotAppendable akan dilemparkan.

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

Aksi

Definisi

AppendObject

oss:PutObject

Anda dapat memanggil operasi ini untuk mengunggah objek dengan menambahkan objek ke objek yang sudah ada.

oss:PutObjectTagging

Saat mengunggah objek dengan menambahkan objek ke objek yang sudah ada, jika Anda menentukan tag objek melalui x-oss-tagging, izin ini diperlukan.

Kode contoh

using System.Text; // Impor namespace System.Text untuk memproses 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. Tentukan wilayah tempat bucket berada. Topik ini menggunakan China (Hangzhou) sebagai contoh. Atur wilayah menjadi cn-hangzhou.
var bucket = "nama bucket Anda";  // Diperlukan. Tentukan nama bucket tujuan. 
var endpoint = null as string;  // Opsional. Tentukan titik akhir yang digunakan untuk mengakses OSS. Topik ini menggunakan China (Hangzhou) sebagai contoh. Atur titik akhir menjadi https://oss-cn-hangzhou.aliyuncs.com.
var key = "kunci objek Anda"; // Diperlukan. Tentukan nama objek ke mana Anda ingin menambahkan data. Format: folder/namaObjek.

// Muat konfigurasi default dari OSS SDK. Konfigurasi ini secara otomatis membaca informasi kredensial, seperti AccessKeys, dari variabel lingkungan.
var cfg = OSS.Configuration.LoadDefault();
// Secara eksplisit tentukan bahwa variabel lingkungan digunakan untuk mendapatkan kredensial untuk verifikasi identitas. Format: OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET.
cfg.CredentialsProvider = new OSS.Credentials.EnvironmentVariableCredentialsProvider();
// Atur wilayah bucket dalam konfigurasi.
cfg.Region = region;
// Jika titik akhir ditentukan, itu akan menimpa titik akhir default.
if(endpoint != null)
{
    cfg.Endpoint = endpoint;
} 

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

// Definisikan bagian pertama dari konten yang akan ditambahkan ke objek OSS.
var content1 = "halo,";
// Definisikan bagian kedua dari konten yang akan ditambahkan ke objek OSS.
var content2 = "oss!";

// Panggil metode AppendObjectAsync untuk melakukan operasi tambahan pertama.
var result1 = await client.AppendObjectAsync(new OSS.Models.AppendObjectRequest()
{
    // Tentukan bucket tujuan.
    Bucket = bucket,
    // Tentukan nama objek tujuan. 
    Key = key,
    // Untuk operasi tambahan pertama, posisi awal harus 0.
    Position = 0,
    Body = new MemoryStream(Encoding.UTF8.GetBytes(content1))
 });

// Panggil metode AppendObjectAsync untuk melakukan operasi tambahan kedua, dimulai dari posisi akhir operasi sebelumnya.
var result2 = await client.AppendObjectAsync(new OSS.Models.AppendObjectRequest()
{
     // Bucket tujuan tetap tidak berubah.
    Bucket = bucket,
    // Nama objek tujuan tetap tidak berubah.
    Key = key,
    // Lanjutkan menulis dari posisi akhir operasi tambahan sebelumnya.
    Position = result1.NextAppendPosition,
    Body = new MemoryStream(Encoding.UTF8.GetBytes(content2))
});

// Cetak hasil unggah.
Console.WriteLine("AppendObject selesai"); // Pesan menunjukkan bahwa operasi telah selesai.
Console.WriteLine($"StatusCode: {result2.StatusCode}");  // Kode status HTTP.
Console.WriteLine($"RequestId: {result2.RequestId}");   // ID permintaan, yang digunakan untuk pemecahan masalah di Alibaba Cloud.
Console.WriteLine("Header Respons:"); // Informasi header respons.
result2.Headers.ToList().ForEach(x => Console.WriteLine(x.Key + " : " + x.Value));   // Telusuri dan cetak semua header respons.
Console.WriteLine($"NextAppendPosition: {result2.NextAppendPosition}"); // Keluarkan posisi awal untuk operasi tambahan berikutnya.

Referensi

Untuk kode contoh lengkap untuk unggah tambahan, lihat AppendObject.cs.