Object Storage Service (OSS) memungkinkan Anda mengonfigurasi tag objek untuk mengklasifikasikan objek. Topik ini menjelaskan cara mengonfigurasi tag untuk objek menggunakan OSS SDK for PHP 2.0.
Catatan penggunaan
Kode contoh dalam topik ini menggunakan ID Wilayah
cn-hangzhoudari Wilayah Hangzhou, Tiongkok. Secara default, titik akhir publik digunakan untuk mengakses sumber daya di bucket. Jika Anda ingin mengakses sumber daya di bucket dengan menggunakan layanan Alibaba Cloud lainnya di wilayah yang sama dengan lokasi bucket tersebut, gunakan titik akhir internal. Untuk informasi lebih lanjut tentang wilayah dan titik akhir OSS, lihat Wilayah dan Titik Akhir.Untuk mengonfigurasi tag untuk objek, Anda harus memiliki izin
oss:PutObjectTagging. Untuk informasi lebih lanjut, lihat Lampirkan Kebijakan Kustom ke Pengguna RAM.
Mengonfigurasi tag untuk sebuah objek saat Anda mengunggah objek tersebut
Mengonfigurasi tag untuk sebuah objek saat Anda mengunggah objek tersebut menggunakan unggah sederhana
Berikut adalah kode contoh yang menunjukkan cara mengonfigurasi tag untuk sebuah objek saat mengunggahnya menggunakan unggah sederhana:
<?php
// Memperkenalkan file autoload untuk memuat pustaka dependen.
require_once __DIR__ . '/../../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// Menentukan deskripsi untuk parameter baris perintah.
$optsdesc = [
"region" => ['help' => Wilayah tempat bucket berada.', 'required' => True], // (Diperlukan) Tentukan wilayah tempat bucket berada.
"endpoint" => ['help' => Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False], // (Opsional) Tentukan endpoint yang dapat digunakan oleh layanan lain untuk mengakses OSS.
"bucket" => ['help' => Nama bucket, 'required' => True], // (Diperlukan) Tentukan nama bucket.
"key" => ['help' => Nama objek, 'required' => True], // (Diperlukan) Tentukan nama objek.
];
// Mengonversi deskripsi parameter menjadi daftar opsi panjang yang diperlukan oleh getopt.
$longopts = \array_map(function ($key) {
return "$key:"; // Tambahkan titik dua (:) di akhir setiap parameter untuk menunjukkan bahwa nilai diperlukan.
}, array_keys($optsdesc));
// Menguraikan parameter baris perintah.
$options = getopt("", $longopts);
// Periksa apakah parameter yang diperlukan telah dikonfigurasi.
foreach ($optsdesc as $key => $value) {
if ($value['required'] === True && empty($options[$key])) {
$help = $value['help']; // Dapatkan informasi bantuan tentang parameter.
echo "Error: argumen berikut diperlukan: --$key, $help" . PHP_EOL;
exit(1); // Jika parameter yang diperlukan tidak dikonfigurasi, keluar dari program.
}
}
// Mendapatkan nilai dari parameter yang diuraikan.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.
$key = $options["key"]; // Nama objek.
// Mendapatkan kredensial akses dari variabel lingkungan.
// Dapatkan AccessKey ID dan Rahasia AccessKey dari variabel lingkungan EnvironmentVariableCredentialsProvider.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
// Gunakan konfigurasi default dari SDK.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider); // Tentukan penyedia kredensial.
$cfg->setRegion($region); // Tentukan wilayah tempat bucket berada.
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]); // Tentukan endpoint jika endpoint disediakan.
}
// Buat instance OSSClient.
$client = new Oss\Client($cfg);
// Tentukan konten yang ingin Anda unggah.
$data = 'Hello OSS';
// Buat objek PutObjectRequest untuk mengunggah objek.
$request = new Oss\Models\PutObjectRequest(
bucket: $bucket,
key: $key,
tagging: "key1=value1&key2=value2"); // Tentukan informasi tag.
$request-> body=Oss\Utils::streamFor($data); // Tentukan bahwa data dalam badan permintaan HTTP adalah aliran biner.
// Lakukan operasi unggah sederhana.
$result = $client->putObject($request);
// Tampilkan hasil unggah.
printf(
'kode status: %s' . PHP_EOL . // Kode status HTTP.
'ID permintaan: %s' . PHP_EOL . // ID permintaan.
'etag: %s' . PHP_EOL, // ETag objek.
$result->statusCode,
$result->requestId,
$result->etag
);
Mengonfigurasi tag untuk sebuah objek saat Anda mengunggah objek tersebut menggunakan unggah multipart
Berikut adalah kode contoh yang menunjukkan cara mengonfigurasi tag untuk sebuah objek saat mengunggahnya menggunakan unggah multipart:
<?php
// Memperkenalkan file autoload untuk memuat pustaka dependen.
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// Menentukan deskripsi untuk parameter baris perintah.
$optsdesc = [
"region" => ['help' => Wilayah tempat bucket berada.', 'required' => True], // (Diperlukan) Tentukan wilayah tempat bucket berada.
"endpoint" => ['help' => Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False], // (Opsional) Tentukan endpoint yang dapat digunakan oleh layanan lain untuk mengakses OSS.
"bucket" => ['help' => Nama bucket, 'required' => True], // (Diperlukan) Tentukan nama bucket.
"key" => ['help' => Nama objek, 'required' => True], // (Diperlukan) Tentukan nama objek.
];
// Mengonversi deskripsi parameter menjadi daftar opsi panjang yang diperlukan oleh getopt.
// Tambahkan titik dua (:) di akhir setiap parameter untuk menunjukkan bahwa nilai diperlukan.
$longopts = \array_map(function ($key) {
return "$key:";
}, array_keys($optsdesc));
// Menguraikan parameter baris perintah.
$options = getopt("", $longopts);
// Periksa apakah parameter yang diperlukan telah dikonfigurasi.
foreach ($optsdesc as $key => $value) {
if ($value['required'] === True && empty($options[$key])) {
$help = $value['help']; // Dapatkan informasi bantuan tentang parameter.
echo "Error: argumen berikut diperlukan: --$key, $help" . PHP_EOL;
exit(1); // Jika parameter yang diperlukan tidak dikonfigurasi, keluar dari program.
}
}
// Mendapatkan nilai dari parameter yang diuraikan.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.
$key = $options["key"]; // Nama objek.
// Mendapatkan kredensial akses dari variabel lingkungan.
// Dapatkan AccessKey ID dan Rahasia AccessKey dari variabel lingkungan EnvironmentVariableCredentialsProvider.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
// Gunakan konfigurasi default dari SDK.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider); // Tentukan penyedia kredensial.
$cfg->setRegion($region); // Tentukan wilayah tempat bucket berada.
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]); // Tentukan endpoint jika endpoint disediakan.
}
// Buat instance OSSClient.
$client = new Oss\Client($cfg);
// Buat permintaan untuk memulai tugas unggah multipart.
$request = new Oss\Models\InitiateMultipartUploadRequest(
bucket: $bucket,
key: $key,
tagging:" key1=value1&key2=value2");
$result = $client->initiateMultipartUpload($request);
// Dapatkan ID unggah dari tugas unggah multipart.
$uploadId = $result->uploadId;
// Buat objek UploadPartRequest untuk mengunggah objek.
$request = new Oss\Models\UploadPartRequest(bucket: $bucket, key: $key);
// Tentukan jalur file lokal dan ukuran bagian.
$bigFileName = "/Users/localpath/yourfilename"; // Tentukan jalur file lokal.
$partSize = 1 * 1024 * 1024; // Tentukan ukuran bagian. Unit: byte. Dalam contoh ini, parameter ini diatur ke 1 MB.
// Buka file lokal dan siapkan untuk tugas unggah multipart.
$file = fopen($bigFileName, 'r');
$parts = []; // Simpan informasi tentang setiap bagian.
if ($file) {
$i = 1; // Tentukan nomor bagian dimulai dari 1.
while (!feof($file)) {
$chunk = fread($file, $partSize); // Polling ukuran bagian.
// Lakukan operasi unggah multipart.
$partResult = $client->uploadPart(
new Oss\Models\UploadPartRequest(
bucket: $bucket,
key: $key,
partNumber: $i, // Tentukan nomor bagian.
uploadId: $uploadId, // Tentukan ID unggah dari tugas unggah multipart.
contentLength: null,
contentMd5: null,
trafficLimit: null,
requestPayer: null,
body: Oss\Utils::streamFor(resource: $chunk) // Konversi blok data menjadi aliran.
)
);
// Buat objek UploadPart dan rekam nomor bagian dan ETags.
$part = new Oss\Models\UploadPart(
partNumber: $i,
etag: $partResult->etag,
);
array_push(array: $parts, values: $part); // Tambahkan informasi bagian ke array.
$i++; // Tentukan nomor bagian. Nomor bagian bertambah secara berurutan.
}
fclose($file); // Tutup pegangan file.
}
// Selesaikan tugas unggah multipart.
$comResult = $client->completeMultipartUpload(
new Oss\Models\CompleteMultipartUploadRequest(
bucket: $bucket,
key: $key,
uploadId: $uploadId, // ID unggah dari tugas unggah multipart.
acl: null,
completeMultipartUpload: new Oss\Models\CompleteMultipartUpload(
parts: $parts // Informasi tentang semua bagian.
),
)
);
// Tampilkan hasil tugas unggah multipart.
printf(
'kode status:' . $comResult->statusCode . PHP_EOL . // Kode status HTTP. Misalnya, kode status HTTP 200 menunjukkan bahwa permintaan berhasil.
'ID permintaan:' . $comResult->requestId . PHP_EOL . // ID permintaan, yang digunakan untuk debugging atau melacak permintaan.
'hasil unggah multipart lengkap:' . var_export($comResult, true) // Hasil rinci tugas unggah multipart.
);
Mengonfigurasi tag untuk sebuah objek saat Anda mengunggah objek tersebut menggunakan unggah tambahan
Berikut adalah kode contoh yang menunjukkan cara mengonfigurasi tag untuk sebuah objek saat mengunggahnya menggunakan unggah tambahan:
<?php
// Memperkenalkan file autoload untuk memuat pustaka dependen.
require_once __DIR__ . '/../../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// Menentukan deskripsi untuk parameter baris perintah.
$optsdesc = [
"region" => ['help' => Wilayah tempat bucket berada.', 'required' => True], // (Diperlukan) Tentukan wilayah tempat bucket berada.
"endpoint" => ['help' => Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False], // (Opsional) Tentukan endpoint yang dapat digunakan oleh layanan lain untuk mengakses OSS.
"bucket" => ['help' => Nama bucket, 'required' => True], // (Diperlukan) Tentukan nama bucket.
"key" => ['help' => Nama objek, 'required' => True], // (Diperlukan) Tentukan nama objek.
];
// Mengonversi deskripsi parameter menjadi daftar opsi panjang yang diperlukan oleh getopt.
// Tambahkan titik dua (:) di akhir setiap parameter untuk menunjukkan bahwa nilai diperlukan.
$longopts = \array_map(function ($key) {
return "$key:";
}, array_keys($optsdesc));
// Menguraikan parameter baris perintah.
$options = getopt("", $longopts);
// Periksa apakah parameter yang diperlukan telah dikonfigurasi.
foreach ($optsdesc as $key => $value) {
if ($value['required'] === True && empty($options[$key])) {
$help = $value['help']; // Dapatkan informasi bantuan tentang parameter.
echo "Error: argumen berikut diperlukan: --$key, $help" . PHP_EOL;
exit(1); // Jika parameter yang diperlukan tidak dikonfigurasi, keluar dari program.
}
}
// Mendapatkan nilai dari parameter yang diuraikan.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.
$key = $options["key"]; // Nama objek.
// Mendapatkan kredensial akses dari variabel lingkungan.
// Dapatkan AccessKey ID dan Rahasia AccessKey dari variabel lingkungan EnvironmentVariableCredentialsProvider.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
// Gunakan konfigurasi default dari SDK.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider); // Tentukan penyedia kredensial.
$cfg->setRegion($region); // Tentukan wilayah tempat bucket berada.
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]); // Tentukan endpoint jika endpoint disediakan.
}
// Buat instance OSSClient.
$client = new Oss\Client($cfg);
// Tentukan konten yang ingin ditambahkan.
$data='Hello Append Object'; // Ganti data sampel dengan konten aktual Anda.
// Buat objek AppendObjectRequest untuk menambahkan data ke objek tertentu.
$request = new Oss\Models\AppendObjectRequest(
bucket: $bucket,
key: $key,
tagging: "key1=value1&key2=value2");
$request-> body=Oss\Utils::streamFor($data); // Tentukan bahwa data dalam badan permintaan HTTP adalah aliran biner.
$request->position = 0; // Atur posisi dari mana operasi tambahan pertama dimulai ke 0.
// Lakukan operasi unggah tambahan.
$result = $client->appendObject($request);
// Tampilkan hasil unggah tambahan.
// Tampilkan kode status HTTP dan ID permintaan untuk memeriksa apakah permintaan berhasil.
printf(
'kode status:' . $result->statusCode . PHP_EOL . // Kode status HTTP. Misalnya, kode status HTTP 200 menunjukkan bahwa permintaan berhasil.
'ID permintaan:' . $result->requestId . PHP_EOL . // ID permintaan, yang digunakan untuk debugging atau melacak permintaan.
posisi tambahan berikutnya:' . $result-> nextPosition. PHP_EOL // Tentukan posisi dari mana operasi tambahan berikutnya dimulai.
);
Mengonfigurasi tag untuk sebuah objek saat Anda menyalin objek tersebut
Berikut adalah kode contoh yang menunjukkan cara mengonfigurasi tag untuk sebuah objek saat menyalinnya:
<?php
// Memperkenalkan file autoload untuk memuat pustaka dependen.
require_once __DIR__ . '/../../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// Menentukan deskripsi untuk parameter baris perintah.
$optsdesc = [
"region" => ['help' => Wilayah tempat bucket berada.', 'required' => True], // (Diperlukan) Tentukan wilayah tempat bucket berada.
"endpoint" => ['help' => Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False], // (Opsional) Tentukan endpoint yang dapat digunakan oleh layanan lain untuk mengakses OSS.
"bucket" => ['help' => Nama bucket, 'required' => True], // (Diperlukan) Tentukan nama bucket tujuan.
"key" => ['help' => Nama objek, 'required' => True], // (Diperlukan) Tentukan nama objek tujuan.
"src-bucket" => ['help' => 'Nama bucket sumber', 'required' => False], // (Opsional) Tentukan nama bucket sumber.
"key" => ['help' => Nama objek, 'required' => True], // (Diperlukan) Tentukan nama objek sumber.
];
// Mengonversi deskripsi parameter menjadi daftar opsi panjang yang diperlukan oleh getopt.
// Tambahkan titik dua (:) di akhir setiap parameter untuk menunjukkan bahwa nilai diperlukan.
$longopts = \array_map(function ($key) {
return "$key:";
}, array_keys($optsdesc));
// Menguraikan parameter baris perintah.
$options = getopt("", $longopts);
// Periksa apakah parameter yang diperlukan telah dikonfigurasi.
foreach ($optsdesc as $key => $value) {
if ($value['required'] === True && empty($options[$key])) {
$help = $value['help']; // Dapatkan informasi bantuan tentang parameter.
echo "Error: argumen berikut diperlukan: --$key, $help" . PHP_EOL;
exit(1); // Jika parameter yang diperlukan tidak dikonfigurasi, keluar dari program.
}
}
// Mendapatkan nilai dari parameter yang diuraikan.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket tujuan.
$key = $options["key"]; // Nama objek tujuan.
$srcKey = $options["src-key"]; // Nama objek sumber.
// Mendapatkan kredensial akses dari variabel lingkungan.
// Dapatkan AccessKey ID dan Rahasia AccessKey dari variabel lingkungan EnvironmentVariableCredentialsProvider.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
// Gunakan konfigurasi default dari SDK.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider); // Tentukan penyedia kredensial.
$cfg->setRegion($region); // Tentukan wilayah tempat bucket berada.
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]); // Tentukan endpoint jika endpoint disediakan.
}
// Buat instance OSSClient.
$client = new Oss\Client($cfg);
// Buat objek CopyObjectRequest untuk menyalin objek sumber.
$request = new Oss\Models\CopyObjectRequest(
bucket: $bucket,
key: $key,
sourceKey: $srcKey,
sourceBucket: $sourceBucket,
taggingDirective: "Replace", // Ganti tag objek sumber saat Anda menyalin objek sumber.
tagging:"key1=value1&key2=value2"); // Tentukan informasi tag.
if (!empty($options["src-bucket"])) {
$request->sourceBucket = $options["src-bucket"]; // Jika nama bucket sumber disediakan, tentukan parameter sourceBucket.
}
$request->sourceKey = $srcKey; // Tentukan nama objek sumber.
// Lakukan operasi penyalinan objek.
$result = $client->copyObject($request);
// Tampilkan hasil penyalinan objek.
printf(
'kode status:' . $result->statusCode . PHP_EOL . // Kode status HTTP. Misalnya, kode status HTTP 200 menunjukkan bahwa permintaan berhasil.
'ID permintaan:' . $result-> requestId. PHP_EOL // ID permintaan, yang digunakan untuk debugging atau melacak permintaan.
);
Menambahkan tag ke atau memodifikasi tag objek yang ada
Menambahkan tag ke atau memodifikasi tag objek yang ada
Jika objek yang ada tidak memiliki tag atau tag objek tidak memenuhi persyaratan Anda, Anda dapat menambahkan atau memodifikasi tag objek tersebut.
Berikut adalah kode contoh yang menunjukkan cara menambahkan atau memodifikasi tag pada objek yang ada:
<?php
// Memperkenalkan file autoload untuk memuat pustaka dependen.
require_once __DIR__ . '/../../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// Menentukan deskripsi untuk parameter baris perintah.
$optsdesc = [
"region" => ['help' => Wilayah tempat bucket berada.', 'required' => True], // (Diperlukan) Tentukan wilayah tempat bucket berada.
"endpoint" => ['help' => Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False], // (Opsional) Tentukan endpoint yang dapat digunakan oleh layanan lain untuk mengakses OSS.
"bucket" => ['help' => Nama bucket, 'required' => True], // (Diperlukan) Tentukan nama bucket.
"key" => ['help' => Nama objek, 'required' => True], // (Diperlukan) Tentukan nama objek.
];
// Mengonversi deskripsi parameter menjadi daftar opsi panjang yang diperlukan oleh getopt.
// Tambahkan titik dua (:) di akhir setiap parameter untuk menunjukkan bahwa nilai diperlukan.
$longopts = \array_map(function ($key) {
return "$key:";
}, array_keys($optsdesc));
// Menguraikan parameter baris perintah.
$options = getopt("", $longopts);
// Periksa apakah parameter yang diperlukan telah dikonfigurasi.
foreach ($optsdesc as $key => $value) {
if ($value['required'] === True && empty($options[$key])) {
$help = $value['help']; // Dapatkan informasi bantuan tentang parameter.
echo "Error: argumen berikut diperlukan: --$key, $help" . PHP_EOL;
exit(1); // Jika parameter yang diperlukan tidak dikonfigurasi, keluar dari program.
}
}
// Mendapatkan nilai dari parameter yang diuraikan.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.
$key = $options["key"]; // Nama objek.
// Mendapatkan kredensial akses dari variabel lingkungan.
// Dapatkan AccessKey ID dan Rahasia AccessKey dari variabel lingkungan EnvironmentVariableCredentialsProvider.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
// Gunakan konfigurasi default dari SDK.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider); // Tentukan penyedia kredensial.
$cfg->setRegion($region); // Tentukan wilayah tempat bucket berada.
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]); // Tentukan endpoint jika endpoint disediakan.
}
// Buat instance OSSClient.
$client = new Oss\Client($cfg);
// Buat objek PutObjectTaggingRequest untuk mengonfigurasi tag untuk objek.
$request = new Oss\Models\PutObjectTaggingRequest(
bucket: $bucket,
key: $key,
tagging: new Oss\Models\Tagging(
tagSet: new Oss\Models\TagSet(
tags: [
new Oss\Models\Tag('k1', 'v1'), // Tentukan kunci dan nilai tag. Contoh: k1=v1.
new Oss\Models\Tag('k2', 'v2') // Tentukan kunci dan nilai tag. Contoh: k2=v2.
]
)
)
);
// Konfigurasikan tag untuk objek.
$result = $client->putObjectTagging($request);
// Tampilkan hasil permintaan.
printf(
'kode status:' . $result->statusCode . PHP_EOL . // Kode status HTTP. Misalnya, kode status HTTP 200 menunjukkan bahwa permintaan berhasil.
'ID permintaan:' . $result-> requestId. PHP_EOL // ID permintaan, yang digunakan untuk debugging atau melacak permintaan.
);