全部产品
Search
文档中心

Object Storage Service:Upload append (C# SDK V1)

更新时间:Nov 29, 2025

Upload append menambahkan konten ke objek yang dapat ditambahkan yang sudah ada dengan menggunakan metode AppendObject.

Catatan penggunaan

  • Topik ini menggunakan titik akhir publik wilayah China (Hangzhou). Jika Anda mengakses OSS dari layanan Alibaba Cloud lainnya yang berada di wilayah yang sama dengan OSS, gunakan titik akhir internal. Untuk informasi selengkapnya mengenai wilayah dan titik akhir OSS, lihat Wilayah dan titik akhir.

  • Pada topik ini, instans OSSClient dibuat dengan menggunakan titik akhir OSS. Jika Anda ingin membuat instans OSSClient dengan menggunakan nama domain kustom atau Security Token Service (STS), lihat Inisialisasi.

  • Jika file tidak ada, pemanggilan operasi AppendObject akan membuat objek yang dapat ditambahkan.

  • Jika file sudah ada:

    • Jika file tersebut merupakan objek yang dapat ditambahkan dan posisi append yang ditentukan sesuai dengan panjang file saat ini, konten akan ditambahkan ke akhir file.

    • Jika file tersebut merupakan objek yang dapat ditambahkan tetapi posisi append yang ditentukan tidak sesuai dengan panjang file saat ini, eksepsi PositionNotEqualToLength akan dilemparkan.

    • Jika file tersebut bukan objek yang dapat ditambahkan, misalnya objek Normal yang diunggah melalui upload simple, eksepsi 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

Action

Definisi

AppendObject

oss:PutObject

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

oss:PutObjectTagging

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

Kode contoh

Kode berikut memberikan contoh cara melakukan upload append:

using Aliyun.OSS;
using Aliyun.OSS.Common;

// Ganti yourEndpoint dengan Endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
var endpoint = "yourEndpoint";
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// Tentukan nama bucket. Misalnya, examplebucket.
var bucketName = "examplebucket";
// Tentukan path lengkap objek. Path lengkap tidak boleh mencakup nama bucket. Misalnya, exampledir/exampleobject.txt.
var objectName = "exampledir/exampleobject.txt";
// Tentukan path lengkap file lokal. Misalnya, D:\\localpath\\examplefile.txt. Jika Anda tidak menentukan path lokal, file akan diunggah dari path lokal proyek tempat program contoh ini berada.
var localFilename = "D:\\localpath\\examplefile.txt";
// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou.
const string region = "cn-hangzhou";

// Buat instans ClientConfiguration dan ubah parameter default sesuai kebutuhan.
var conf = new ClientConfiguration();

// Gunakan Signature V4.
conf.SignatureVersion = SignatureVersion.V4;

// Buat instans OssClient.
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
client.SetRegion(region);
// Posisi untuk operasi append pertama adalah 0. Nilai kembali adalah posisi untuk operasi append berikutnya. Posisi untuk operasi append selanjutnya adalah panjang objek sebelum operasi append.
long position = 0;
try
{
    var metadata = client.GetObjectMetadata(bucketName, objectName);
    position = metadata.ContentLength;
}
catch (Exception) { }
try
{
    using (var fs = File.Open(localFilename, FileMode.Open))
    {
        var request = new AppendObjectRequest(bucketName, objectName)
        {
            ObjectMetadata = new ObjectMetadata(),
            Content = fs,
            Position = position
        };
        // Tambahkan objek.
        var result = client.AppendObject(request);
        // Atur posisi append objek.
        position = result.NextAppendPosition;
        Console.WriteLine("Append object succeeded, next append position:{0}", position);
    }
    // Dapatkan posisi append dan tambahkan objek lagi.
    using (var fs = File.Open(localFilename, FileMode.Open))
    {
        var request = new AppendObjectRequest(bucketName, objectName)
        {
            ObjectMetadata = new ObjectMetadata(),
            Content = fs,
            Position = position
        };
        var result = client.AppendObject(request);
        position = result.NextAppendPosition;
        Console.WriteLine("Append object succeeded, next append position:{0}", position);
    }
}
catch (Exception ex)
{
    Console.WriteLine("Append object failed, {0}", ex.Message);
}

Referensi

  • Untuk kode contoh lengkap mengenai upload append, lihat contoh GitHub.

  • Untuk informasi selengkapnya mengenai operasi API untuk upload append, lihat AppendObject.