Topik ini menjelaskan cara menggunakan metode unduhan sederhana untuk mengunduh objek dari bucket ke file lokal. Metode ini mudah digunakan dan cocok untuk mengunduh objek dari OSS ke komputer lokal Anda dengan cepat.
Perhatian
Kode contoh dalam topik ini menggunakan Wilayah China (Hangzhou) (ID Wilayah:
cn-hangzhou) sebagai contoh. Secara default, titik akhir Internet digunakan. Jika Anda ingin mengakses OSS dari layanan Alibaba Cloud lainnya di wilayah yang sama, gunakan titik akhir internal. Untuk informasi lebih lanjut tentang wilayah dan titik akhir yang didukung oleh OSS, lihat Wilayah dan Titik Akhir OSS.Untuk mengunduh objek ke file lokal, Anda harus memiliki izin
oss:GetObject. Untuk informasi lebih lanjut, lihat Memberikan Kebijakan Akses Kustom kepada Pengguna RAM.Topik ini memberikan contoh cara memperoleh kredensial akses dari variabel lingkungan. Untuk informasi lebih lanjut tentang cara mengonfigurasi kredensial akses, lihat Mengonfigurasi Kredensial Akses untuk PHP.
Kode Contoh
Gunakan kode berikut untuk mengunduh objek dari bucket ke file lokal.
<?php
// Impor file autoloader untuk memastikan bahwa library dependensi dimuat dengan benar.
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// Tentukan deskripsi parameter baris perintah.
$optsdesc = [
"region" => ['help' => 'Wilayah tempat bucket berada.', 'required' => True], // Wilayah tempat bucket berada. (Diperlukan)
"endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False], // Titik akhir. (Opsional)
"bucket" => ['help' => 'Nama bucket', 'required' => True], // Nama bucket. (Diperlukan)
"key" => ['help' => 'Nama objek', 'required' => True], // Nama objek. (Diperlukan)
];
// Konversi deskripsi parameter ke format opsi panjang yang diperlukan oleh getopt.
// Tanda titik dua ":" setelah setiap parameter menunjukkan bahwa parameter tersebut memerlukan nilai.
$longopts = \array_map(function ($key) {
return "$key:";
}, array_keys($optsdesc));
// Parsing parameter baris perintah.
$options = getopt("", $longopts);
// Periksa apakah parameter yang diperlukan ada.
foreach ($optsdesc as $key => $value) {
if ($value['required'] === True && empty($options[$key])) {
$help = $value['help']; // Dapatkan informasi bantuan parameter.
echo "Error: argumen berikut diperlukan: --$key, $help" . PHP_EOL;
exit(1); // Jika parameter yang diperlukan tidak ada, keluar dari program.
}
}
// Ekstrak nilai dari parameter yang telah diparsing.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.
$key = $options["key"]; // Nama objek.
// Muat informasi kredensial dari variabel lingkungan.
// Gunakan EnvironmentVariableCredentialsProvider untuk membaca Access Key ID dan Access Key Secret dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
// Gunakan konfigurasi default dari SDK.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider); // Setel penyedia kredensial.
$cfg->setRegion($region); // Setel wilayah tempat bucket berada.
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]); // Jika titik akhir disediakan, setel titik akhir.
}
// Buat instance klien OSS.
$client = new Oss\Client($cfg);
// Buat objek GetObjectRequest untuk mendapatkan konten objek yang ditentukan.
$request = new Oss\Models\GetObjectRequest(bucket: $bucket, key: $key);
// Jalankan operasi get object.
$result = $client->getObject($request);
// Tentukan jalur file lokal yang akan disimpan.
$localFilePath = 'path/to/local/file.txt'; // Ganti dengan jalur file sebenarnya.
// Tulis konten ke file lokal.
file_put_contents( $localFilePath, $result->body->getContents());
// Cetak hasilnya.
// Keluarkan kode status HTTP, ID permintaan, dan konten objek.
printf(
'kode status:' . $result->statusCode . PHP_EOL . // Kode status HTTP. Misalnya, 200 menunjukkan bahwa permintaan berhasil.
'id permintaan:' . $result->requestId . PHP_EOL // ID permintaan, yang digunakan untuk debugging atau melacak permintaan.
);
Skenario
Referensi
Untuk kode contoh lengkap yang digunakan untuk mengunduh objek ke file lokal, lihat contoh GitHub.