全部产品
Search
文档中心

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

更新时间:Nov 29, 2025

Saat sebuah objek diunggah, Object Storage Service (OSS) dapat memicu proses callback ke server aplikasi. Untuk mengonfigurasi upload callbacks, cukup tambahkan parameter callback yang diperlukan ke permintaan unggahan yang dikirim ke OSS.

Catatan penggunaan

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

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

Kode contoh

Kode berikut menunjukkan contoh penggunaan upload callbacks:

using System;
using System.IO;
using System.Text;
using Aliyun.OSS;
using Aliyun.OSS.Common;
using Aliyun.OSS.Util;
namespace Callback
{
    class Program
    {
        static void Main(string[] args)
        {
            Program.PutObjectCallback();
            Console.ReadKey();
        }
        public static void PutObjectCallback()
        {
            // 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, misalnya exampledir/exampleobject.txt. Path lengkap tidak boleh mengandung nama bucket.
            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 default proyek.
            var localFilename = "D:\\localpath\\examplefile.txt";
            // Setel URL server callback, misalnya https://example.com:23450.
            const string callbackUrl = "yourCallbackServerUrl";
            // Setel nilai badan permintaan untuk callback.
            const string callbackBody = "bucket=${bucket}&object=${object}&etag=${etag}&size=${size}&mimeType=${mimeType}&" +
                                        "my_var1=${x:var1}&my_var2=${x:var2}";
            //  Tentukan Endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), setel Endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
            const string endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
            // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), setel wilayah ke cn-hangzhou.
            const string region = "cn-hangzhou";
            // Buat instans ClientConfiguration dan ubah parameter default sesuai kebutuhan.
            var conf = new ClientConfiguration();
            // Setel versi signature ke V4.
            conf.SignatureVersion = SignatureVersion.V4;

            // Buat instans OssClient.
            var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
            client.SetRegion(region);
            try
            {
                string responseContent = "";
                var metadata = BuildCallbackMetadata(callbackUrl, callbackBody);
                using (var fs = File.Open(localFilename, FileMode.Open))
                {
                    var putObjectRequest = new PutObjectRequest(bucketName, objectName, fs, metadata);
                    var result = client.PutObject(putObjectRequest);
                    responseContent = GetCallbackResponse(result);
                }
                Console.WriteLine("Put object:{0} berhasil, konten respons callback:{1}", objectName, responseContent);
            }
            catch (OssException ex)
            {
                Console.WriteLine("Gagal dengan kode kesalahan: {0}; Info kesalahan: {1}. \nRequestID: {2}\tHostID: {3}",
                    ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Gagal dengan info kesalahan: {0}", ex.Message);
            }
        }
        // Konfigurasikan upload callback.
        private static ObjectMetadata BuildCallbackMetadata(string callbackUrl, string callbackBody)
        {
            string callbackHeaderBuilder = new CallbackHeaderBuilder(callbackUrl, callbackBody).Build();
            string CallbackVariableHeaderBuilder = new CallbackVariableHeaderBuilder().
                AddCallbackVariable("x:var1", "x:value1").AddCallbackVariable("x:var2", "x:value2").Build();
            var metadata = new ObjectMetadata();
            metadata.AddHeader(HttpHeaders.Callback, callbackHeaderBuilder);
            metadata.AddHeader(HttpHeaders.CallbackVar, CallbackVariableHeaderBuilder);
            return metadata;
        }
        // Baca pesan yang dikembalikan dari upload callback.
        private static string GetCallbackResponse(PutObjectResult putObjectResult)
        {
            string callbackResponse = null;
            using (var stream = putObjectResult.ResponseStream)
            {
                var buffer = new byte[4 * 1024];
                var bytesRead = stream.Read(buffer, 0, buffer.Length);
                callbackResponse = Encoding.Default.GetString(buffer, 0, bytesRead);
            }
            return callbackResponse;
        }
    }
}

Referensi

  • Untuk kode contoh lengkap mengenai upload callbacks, lihat GitHub sample.

  • Untuk informasi selengkapnya mengenai operasi API untuk upload callbacks, lihat Callback.