全部产品
Search
文档中心

Object Storage Service:Cantumkan objek menggunakan OSS SDK untuk PHP 2.0

更新时间:Aug 07, 2025

Topik ini menjelaskan cara mendaftar semua objek dalam sebuah bucket menggunakan Object Storage Service (OSS) SDK untuk PHP.

Catatan

  • Kode contoh dalam topik ini menggunakan ID Wilayah cn-hangzhou dari Wilayah Hangzhou, Tiongkok. Secara default, titik akhir publik digunakan untuk mengakses sumber daya dalam sebuah bucket. Jika Anda ingin mengakses sumber daya dalam bucket tersebut dengan menggunakan layanan Alibaba Cloud lainnya di wilayah yang sama dengan lokasi bucket, gunakan titik akhir internal. Untuk informasi lebih lanjut tentang wilayah dan titik akhir OSS, lihat Wilayah dan Titik Akhir.

  • Untuk mencantumkan objek, Anda harus memiliki izin oss:ListObjects. Untuk informasi lebih lanjut, lihat Lampirkan Kebijakan Kustom ke Pengguna RAM.

Kode contoh

Berikut adalah kode contoh yang menunjukkan cara memanggil operasi ListObjectsV2 untuk mendaftar semua objek dalam sebuah 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.
];

// 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.

// 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);

// Buat objek Paginator untuk mendaftar objek per halaman.
// Daftar objek per halaman menggunakan objek ListObjectsV2Paginator.
$paginator = new Oss\Paginator\ListObjectsV2Paginator(client: $client);
$iter = $paginator->iterPage(new Oss\Models\ListObjectsV2Request(bucket: $bucket)); // Inisialisasi paginator.

// Telusuri objek yang terdaftar.
foreach ($iter as $page) {
    foreach ($page->contents ??  [] as $object) {
        // Tampilkan informasi tentang setiap objek pada halaman.
        // Tampilkan nama, tipe, dan ukuran setiap objek.
        print("Objek: $object->key, $object->type, $object->size\n");
    }
}

Skenario umum

Daftar semua objek dalam direktori

Berikut adalah kode contoh yang menunjukkan cara menentukan parameter prefix untuk mendaftar informasi tentang semua objek dalam direktori tertentu, termasuk ukuran objek, tipe, dan nama:

<?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.
];

// 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 diparsed.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.

// 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);

// Buat objek Paginator untuk mendaftar objek per halaman.
// Daftar objek per halaman menggunakan objek ListObjectsV2Paginator.
$paginator = new Oss\Paginator\ListObjectsV2Paginator(client: $client);
$iter = $paginator->iterPage(new Oss\Models\ListObjectsV2Request(
                bucket: $bucket,
                prefix: "contoh/", // Setel parameter prefix ke contoh/ untuk mendaftar semua objek dalam direktori contoh/.
            )); // Inisialisasi paginator.

// Telusuri objek yang terdaftar.
foreach ($iter as $page) {
    foreach ($page->contents ??  [] as $object) {
        // Tampilkan informasi tentang setiap objek pada halaman.
        // Tampilkan nama, tipe, dan ukuran setiap objek.
        print("Objek: $object->key, $object->type, $object->size\n");
    }
}

Daftar objek yang namanya mengandung awalan tertentu

Berikut adalah kode contoh yang menunjukkan cara menentukan parameter prefix untuk mendaftar informasi tentang objek yang namanya mengandung awalan tertentu, termasuk ukuran objek, tipe, dan nama:

<?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.
];

// 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 diparsed.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.

// 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);

// Buat objek Paginator untuk mendaftar objek per halaman.
// Daftar objek per halaman menggunakan objek ListObjectsV2Paginator.
$paginator = new Oss\Paginator\ListObjectsV2Paginator(client: $client);
$iter = $paginator->iterPage(new Oss\Models\ListObjectsV2Request(
                bucket: $bucket,
                prefix: "objek-saya-", // Setel parameter prefix ke objek-saya- untuk mendaftar objek yang namanya mengandung awalan objek-saya-.
            )); // Inisialisasi paginator.

// Telusuri objek yang terdaftar.
foreach ($iter as $page) {
    foreach ($page->contents ??  [] as $object) {
        // Tampilkan informasi tentang setiap objek pada halaman.
        // Tampilkan nama, tipe, dan ukuran setiap objek.
        print("Objek: $object->key, $object->type, $object->size\n");
    }
}

Daftar sejumlah objek tertentu

Berikut adalah kode contoh yang menunjukkan cara menentukan parameter maxKeys untuk mendaftar informasi tentang sejumlah objek tertentu, termasuk ukuran objek, tipe, dan nama:

<?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.
];

// 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 diparsed.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.

// 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);

// Buat objek Paginator untuk mendaftar objek per halaman.
// Daftar objek per halaman menggunakan objek ListObjectsV2Paginator.
$paginator = new Oss\Paginator\ListObjectsV2Paginator(client: $client);
$iter = $paginator->iterPage(new Oss\Models\ListObjectsV2Request(
                bucket: $bucket,
                maxKeys: 10, // Setel jumlah maksimum objek yang dapat didaftar untuk satu operasi daftar menjadi 10.
            )); // Inisialisasi paginator.

// Telusuri objek yang terdaftar.
foreach ($iter as $page) {
    foreach ($page->contents ??  [] as $object) {
        // Tampilkan informasi tentang setiap objek pada halaman.
        // Tampilkan nama, tipe, dan ukuran setiap objek.
        print("Objek: $object->key, $object->type, $object->size\n");
    }
}

Daftar semua objek dari posisi tertentu

Berikut adalah kode contoh yang menunjukkan cara mengonfigurasi parameter StartAfter untuk menentukan posisi awal dari mana operasi daftar dimulai. Semua objek yang namanya secara alfabetis setelah nilai parameter StartAfter akan dikembalikan.

<?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.
];

// 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 diparsed.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.

// 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);

// Buat objek Paginator untuk mendaftar objek per halaman.
// Daftar objek per halaman menggunakan objek ListObjectsV2Paginator.
$paginator = new Oss\Paginator\ListObjectsV2Paginator(client: $client);
$iter = $paginator->iterPage(new Oss\Models\ListObjectsV2Request(
                bucket: $bucket,
                startAfter:"objek-saya-", // Setel parameter startAfter ke objek-saya- untuk mendaftar semua objek yang namanya secara alfabetis setelah objek-saya-.
            )); // Inisialisasi paginator.

// Telusuri objek yang terdaftar.
foreach ($iter as $page) {
    foreach ($page->contents ??  [] as $object) {
        // Tampilkan informasi tentang setiap objek pada halaman.
        // Tampilkan nama, tipe, dan ukuran setiap objek.
        print("Objek: $object->key, $object->type, $object->size\n");
    }
}

Daftar semua subdirektori di direktori root

<?php

// Masukkan file autoload untuk memuat dependensi.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Definisikan dan jelaskan 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 untuk mengakses OSS.
    "bucket" => ['help' => 'Nama bucket', 'required' => True], // (Diperlukan) Tentukan nama bucket.
];

// Ubah deskripsi 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 untuk parameter.
        echo "Error: argumen berikut diperlukan: --$key, $help" . PHP_EOL;
        exit(1); // Keluar dari program jika parameter yang diperlukan tidak ada.
    }
}

// Tetapkan nilai yang diurai dari parameter baris perintah ke variabel yang sesuai.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.

// Muat kredensial akses dari variabel lingkungan.
// Gunakan EnvironmentVariableCredentialsProvider untuk mengambil ID AccessKey dan Rahasia AccessKey dari variabel lingkungan.    
$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 disediakan.
}

// Buat instance OSSClient.
$client = new Oss\Client($cfg);

// Buat objek Paginator untuk mendaftar objek per halaman.
// Daftar objek per halaman menggunakan objek ListObjectsV2Paginator.
$paginator = new Oss\Paginator\ListObjectsV2Paginator(client: $client);
$iter = $paginator->iterPage(request: new Oss\Models\ListObjectsV2Request(
                bucket: $bucket,
                prefix:"",
                delimiter: "/",
            )); // Inisialisasi paginator.

// Telusuri objek yang terdaftar.
foreach ($iter as $page) {
    # Keluarkan subdirektori di setiap halaman.
    foreach ($page->commonPrefixes ??  [] as $prefixObject) {
        echo "SubPrefix: " . $prefixObject->prefix . PHP_EOL;
    }
}

Referensi

  • Untuk kode contoh lengkap yang digunakan untuk mendaftar objek, kunjungi GitHub.