Objek yang disimpan di Object Storage Service (OSS) terdiri dari kunci, data, dan metadata objek. Metadata objek menjelaskan properti objek tersebut, mencakup header HTTP standar dan metadata yang ditentukan pengguna. Anda dapat mengatur header HTTP standar untuk menentukan kebijakan permintaan HTTP kustom, seperti kebijakan cache atau unduhan paksa, serta menetapkan metadata yang ditentukan pengguna untuk mengidentifikasi tujuan atau properti objek.
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 menggunakan titik akhir OSS. Jika Anda ingin membuat instans OSSClient dengan nama domain kustom atau Security Token Service (STS), lihat Inisialisasi.
Untuk mengatur metadata objek, Anda harus memiliki izin
oss:PutObject. Untuk mengambil metadata objek, Anda harus memiliki izinoss:GetObject. Untuk informasi selengkapnya, lihat Menyambungkan kebijakan kustom ke RAM user.
Kode contoh
Kode berikut menunjukkan cara mengatur, memodifikasi, dan mengambil metadata file:
using Aliyun.OSS;
using Aliyun.OSS.Common;
using Aliyun.OSS.Util;
// Set yourEndpoint ke titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir menjadi 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 diatur.
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// Tentukan nama bucket.
var bucketName = "examplebucket";
// Tentukan path lengkap objek. Path lengkap tidak boleh mengandung nama bucket.
var objectName = "exampleobject.txt";
// Tentukan path lengkap file lokal. Jika Anda tidak menentukan path ini, file akan diunggah dari path lokal proyek.
var localFilename = "D:\\localpath\\examplefile.txt";
// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi 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);
try
{
using (var fs = File.Open(localFilename, FileMode.Open))
{
// Buat metadata untuk file yang akan diunggah. Anda dapat mengatur header HTTP menggunakan metadata file.
var metadata = new ObjectMetadata()
{
// Tentukan tipe file.
ContentType = "text/html",
// Atur waktu kedaluwarsa cache. Formatnya adalah Greenwich Mean Time (GMT).
ExpirationTime = DateTime.Parse("2025-10-12T00:00:00.000Z"),
};
// Atur panjang file yang akan diunggah. Jika file lebih besar dari panjang ini, file akan dipotong hingga panjang tersebut. Jika file lebih kecil, panjang file aktual yang digunakan.
metadata.ContentLength = fs.Length;
// Atur perilaku caching halaman web saat file diunduh.
metadata.CacheControl = "No-Cache";
// Atur nilai metadata mykey1 menjadi myval1.
metadata.UserMetadata.Add("mykey1", "myval1");
// Atur nilai metadata mykey2 menjadi myval2.
metadata.UserMetadata.Add("mykey2", "myval2");
var saveAsFilename = "file-name-test-123.txt";
var contentDisposition = string.Format("attachment;filename*=utf-8''{0}", HttpUtils.EncodeUri(saveAsFilename, "utf-8"));
// Tentukan nama file default untuk konten yang disimpan dari permintaan.
metadata.ContentDisposition = contentDisposition;
// Unggah file dan atur metadatanya.
client.PutObject(bucketName, objectName, fs, metadata);
Console.WriteLine("Put object succeeded");
// Dapatkan metadata file.
var oldMeta = client.GetObjectMetadata(bucketName, objectName);
// Atur metadata file baru.
var newMeta = new ObjectMetadata()
{
ContentType = "application/octet-stream",
ExpirationTime = DateTime.Parse("2035-11-11T00:00:00.000Z"),
// Tentukan format encoding konten yang akan digunakan saat file diunduh.
ContentEncoding = null,
CacheControl = ""
};
// Tambahkan metadata kustom.
newMeta.UserMetadata.Add("author", "oss");
newMeta.UserMetadata.Add("flag", "my-flag");
newMeta.UserMetadata.Add("mykey2", "myval2-modified-value");
// Modifikasi metadata file menggunakan metode ModifyObjectMeta.
client.ModifyObjectMeta(bucketName, objectName, newMeta);
}
}
catch (Exception ex)
{
Console.WriteLine("Put object failed, {0}", ex.Message);
}Referensi
Untuk kode contoh lengkap tentang pengaturan, modifikasi, dan pengambilan metadata file, lihat Contoh GitHub.
Untuk informasi selengkapnya mengenai operasi API yang dapat dipanggil untuk mengatur metadata objek selama unggahan sederhana, lihat PutObject.
Untuk informasi selengkapnya mengenai operasi API yang digunakan untuk memodifikasi metadata file saat menyalin file, lihat CopyObject.
Untuk informasi selengkapnya mengenai operasi API yang dapat dipanggil untuk mengambil metadata objek, lihat GetObjectMeta dan HeadObject.