Topik ini menjelaskan cara dengan cepat mengunggah file lokal ke Object Storage Service (OSS) menggunakan metode unggah sederhana. Metode ini cocok untuk skenario di mana Anda ingin segera mengunggah file lokal.
Catatan penggunaan
Kode contoh dalam topik ini menggunakan ID wilayah
cn-hangzhoudari wilayah Tiongkok (Hangzhou). Secara default, titik akhir publik digunakan untuk mengakses sumber daya dalam bucket. Jika Anda ingin mengakses sumber daya dalam bucket menggunakan layanan Alibaba Cloud lainnya di wilayah yang sama dengan bucket tersebut, gunakan titik akhir internal. Untuk informasi lebih lanjut tentang wilayah dan titik akhir OSS, lihat Wilayah dan Titik Akhir.Untuk menggunakan unggah sederhana, Anda harus memiliki izin
oss:PutObject. Untuk informasi lebih lanjut, lihat Lampirkan Kebijakan Kustom ke Pengguna RAM.Dalam topik ini, kredensial akses diperoleh dari variabel lingkungan. Untuk informasi lebih lanjut, lihat Konfigurasikan Kredensial Akses untuk OSS SDK untuk PHP.
Kode contoh
Berikut adalah kode contoh yang menunjukkan cara mengunggah file lokal ke bucket:
<?php
// Masukkan file autoload untuk memuat pustaka dependen.
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// Tentukan 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 titik akhir 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.
"file" => ['help' => 'Jalur lokal ke file yang ingin Anda unggah.', 'required' => True], // (Diperlukan) Tentukan jalur file lokal.
];
// Ubah 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));
// Parsing 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.
}
}
// Dapatkan nilai dari parameter yang telah diparsing.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.
$key = $options["key"]; // Nama objek.
$file = $options["file"]; // Jalur file lokal.
// Dapatkan kredensial akses dari variabel lingkungan.
// Dapatkan ID AccessKey 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 titik akhir jika titik akhir disediakan.
}
// Buat instance OSSClient.
$client = new Oss\Client($cfg);
// Periksa apakah file lokal ada.
if (!file_exists($file)) {
echo "Error: File yang ditentukan tidak ada." . PHP_EOL; // Jika file lokal tidak ada, tampilkan pesan kesalahan dan keluar dari program.
exit(1);
}
// Buka file lokal dan siapkan tugas unggah sederhana.
// Gunakan fopen untuk membuka file lokal dalam mode baca saja dan ubah file menjadi aliran menggunakan Utils::streamFor.
$body = Oss\Utils::streamFor(fopen($file, 'r'));
// Buat objek PutObjectRequest untuk mengunggah file lokal.
$request = new Oss\Models\PutObjectRequest(bucket: $bucket, key: $key);
$request->body = $body; // Tentukan bahwa badan permintaan HTTP adalah aliran file.
// Eksekusi permintaan unggah sederhana.
$result = $client->putObject($request);
// Tampilkan hasil permintaan unggah sederhana.
// Tampilkan kode status HTTP, ID permintaan, dan ETag objek 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.
'etag:' . $result->etag . PHP_EOL // ETag objek, yang digunakan untuk mengidentifikasi konten objek.
);
Skenario umum
Referensi
Untuk kode contoh lengkap untuk unggah sederhana, kunjungi GitHub.