Objek yang disimpan di Object Storage Service (OSS) terdiri dari kunci, data, dan metadata objek. Metadata objek menjelaskan properti suatu objek, 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 mengatur metadata yang ditentukan pengguna untuk mengidentifikasi tujuan atau properti objek tersebut.
Catatan
Topik ini menggunakan titik akhir publik wilayah China (Hangzhou). Untuk mengakses OSS dari layanan Alibaba Cloud lainnya dalam wilayah yang sama, gunakan titik akhir internal. Untuk detail mengenai wilayah dan titik akhir yang didukung, 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 Create an OssClient instance.
Untuk mengatur metadata objek, Anda harus memiliki izin
oss:PutObject. Untuk informasi selengkapnya, lihat Grant custom permissions to a RAM user.
Kode contoh
Kode berikut menunjukkan cara mengatur metadata saat mengunggah objek.
Jika objek dengan nama yang sama sudah ada di bucket, objek tersebut akan ditimpa saat Anda mengatur metadata selama proses pengunggahan. Untuk informasi lebih lanjut tentang cara mencegah penimpaan objek dengan nama yang sama, lihat Prevent overwriting an object with the same name.
<?php
if (is_file(__DIR__ . '/../autoload.php')) {
require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
require_once __DIR__ . '/../vendor/autoload.php';
}
use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\CoreOssException;
// 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.
$provider = new EnvironmentVariableCredentialsProvider();
// Ganti yourEndpoint dengan titik akhir wilayah tempat bucket berada. Misalnya, untuk wilayah China (Hangzhou), atur titik akhir menjadi https://oss-cn-hangzhou.aliyuncs.com.
$endpoint = "yourEndpoint";
// Tentukan nama bucket. Contoh: examplebucket.
$bucket= "examplebucket";
// Tentukan path lengkap objek. Path lengkap tidak boleh mengandung nama bucket. Contoh: exampledir/exampleobject.txt.
$object = "exampledir/exampleobject.txt";
$content = file_get_contents(__FILE__);
$options = array(
OssClient::OSS_HEADERS => array(
'Expires' => '2012-10-01 08:00:00',
'Content-Disposition' => 'attachment; filename="xxxxxx"',
'x-oss-meta-self-define-title' => 'user-defined meta info',
));
try{
$config = array(
"provider" => $provider,
"endpoint" => $endpoint,
"signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
"region"=> "cn-hangzhou"
);
$ossClient = new OssClient($config);
// Atur metadata saat mengunggah objek.
$ossClient->putObject($bucket, $object, $content, $options);
} catch(OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
return;
}
print(__FUNCTION__ . ": OK" . "\n");
Referensi
FAQ
Bagaimana cara mencegah penimpaan objek dengan nama yang sama saat saya mengunggah objek dan mengatur metadatanya?
Untuk mencegah penimpaan objek dengan nama yang sama di bucket, gunakan salah satu metode berikut:
Aktifkan Pengendalian versi
Setelah Anda mengaktifkan Pengendalian versi, objek yang ditimpa di bucket akan disimpan sebagai versi historis. Anda dapat memulihkan versi historis kapan saja. Untuk informasi selengkapnya, lihat Enable versioning.
Sertakan parameter dalam permintaan unggah untuk mencegah penimpaan
Sertakan parameter x-oss-forbid-overwrite di header permintaan unggah dan atur nilainya ke true. Jika Anda mengunggah objek yang memiliki nama yang sama dengan objek yang sudah ada di bucket, proses unggah akan gagal dan error FileAlreadyExists dikembalikan. Untuk informasi selengkapnya, lihat PutObject.