All Products
Search
Document Center

Object Storage Service:Daftar objek (PHP SDK V1)

Last Updated:Nov 30, 2025

Topik ini menjelaskan cara menampilkan daftar objek dalam bucket yang telah diaktifkan fitur versioning-nya. Anda dapat menampilkan semua objek, jumlah objek tertentu, atau objek dengan awalan tertentu.

Catatan

  • Pada topik ini, digunakan titik akhir publik wilayah China (Hangzhou). Untuk mengakses OSS dari layanan Alibaba Cloud lainnya dalam wilayah yang sama, gunakan titik akhir internal. Untuk informasi selengkapnya mengenai wilayah dan titik akhir yang didukung, lihat Wilayah dan titik akhir.

  • Pada topik ini, instans OSSClient dibuat menggunakan titik akhir OSS. Jika Anda ingin membuat instans OSSClient menggunakan nama domain kustom atau Security Token Service (STS), lihat Buat OssClient.

  • Anda harus memiliki izin oss:ListObjectVersions untuk menampilkan daftar objek. Untuk informasi selengkapnya, lihat Berikan izin kustom kepada RAM user.

Daftar semua versi objek dalam bucket

Kode berikut memberikan contoh cara menampilkan semua versi objek, termasuk penanda hapus, dalam bucket examplebucket.

<?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 disetel.
$provider = new EnvironmentVariableCredentialsProvider();
// Ganti yourEndpoint dengan titik akhir wilayah tempat bucket berada. Misalnya, untuk wilayah China (Hangzhou), setel titik akhir ke https://oss-cn-hangzhou.aliyuncs.com.
$endpoint = "yourEndpoint";
// Tentukan nama bucket. Misalnya, examplebucket.
$bucket= "examplebucket";

$config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,
        "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
        "region"=> "cn-hangzhou"
    );
    $ossClient = new OssClient($config);

try{
    $option = array(
        OssClient::OSS_KEY_MARKER => null,
        OssClient::OSS_VERSION_ID_MARKER => null
    );
    $bool = true;
    while ($bool){
        $result = $ossClient->listObjectVersions($bucket,$option);
        // Lihat informasi versi objek.
        foreach ($result->getObjectVersionList() as $key => $info){
            printf("key name: {$info->getKey()}\n");
            printf("versionid: {$info->getVersionId()}\n");
            printf("Is latest: {$info->getIsLatest()}\n\n");
        }

        // Lihat informasi versi penanda hapus.
        foreach ($result->getDeleteMarkerList() as $key => $info){
            printf("del_maker key name: {$info->getKey()}\n");
            printf("del_maker versionid: {$info->getVersionId()}\n");
            printf("del_maker Is latest: {$info->getIsLatest()}\n\n");
        }

        if($result->getIsTruncated() === 'true'){
            $option[OssClient::OSS_KEY_MARKER] = $result->getNextKeyMarker();
        $option[OssClient::OSS_VERSION_ID_MARKER] = $result->getNextVersionIdMarker();
        }else{
            $bool = false;
        }
    }
} catch(OssException $e) {
    printf($e->getMessage() . "\n");
    return;
}

Daftar versi objek dengan awalan tertentu

Kode berikut memberikan contoh cara menampilkan versi objek yang memiliki awalan "test" dalam bucket examplebucket.

<?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 disetel.
$provider = new EnvironmentVariableCredentialsProvider();
// Ganti yourEndpoint dengan titik akhir wilayah tempat bucket berada. Misalnya, untuk wilayah China (Hangzhou), setel titik akhir ke https://oss-cn-hangzhou.aliyuncs.com.
$endpoint = "yourEndpoint";
// Tentukan nama bucket. Misalnya, examplebucket.
$bucket= "examplebucket";

$config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,
        "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
        "region"=> "cn-hangzhou"
    );
    $ossClient = new OssClient($config);

try{
    $option = array(
        OssClient::OSS_KEY_MARKER => null,
        OssClient::OSS_VERSION_ID_MARKER => null,
        // Tampilkan versi objek yang memiliki awalan "test".
        OssClient::OSS_PREFIX => "test"
    );
    $bool = true;
    while ($bool){
        $result = $ossClient->listObjectVersions($bucket,$option);
        // Lihat informasi versi objek.
        foreach ($result->getObjectVersionList() as $key => $info){
            printf("key name: {$info->getKey()}\n");
            printf("versionid: {$info->getVersionId()}\n");
            printf("Is latest: {$info->getIsLatest()}\n\n");
        }

        // Lihat informasi versi penanda hapus.
        foreach ($result->getDeleteMarkerList() as $key => $info){
            printf("del_maker key name: {$info->getKey()}\n");
            printf("del_maker versionid: {$info->getVersionId()}\n");
            printf("del_maker Is latest: {$info->getIsLatest()}\n");
        }

        if($result->getIsTruncated() === 'true'){
            $option[OssClient::OSS_KEY_MARKER] = $result->getNextKeyMarker();
            $option[OssClient::OSS_VERSION_ID_MARKER] = $result->getNextVersionIdMarker();
        }else{
            $bool = false;
        }
    }
} catch(OssException $e) {
    printf($e->getMessage() . "\n");
    return;
}

Daftar jumlah tertentu versi objek

Kode berikut memberikan contoh cara menampilkan jumlah tertentu versi objek dalam bucket examplebucket.

<?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 disetel.
$provider = new EnvironmentVariableCredentialsProvider();
// Ganti yourEndpoint dengan titik akhir wilayah tempat bucket berada. Misalnya, untuk wilayah China (Hangzhou), setel titik akhir ke https://oss-cn-hangzhou.aliyuncs.com.
$endpoint = "yourEndpoint";
// Tentukan nama bucket. Misalnya, examplebucket.
$bucket= "examplebucket";

$config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,
        "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
        "region"=> "cn-hangzhou"
    );
    $ossClient = new OssClient($config);

try{
    $option = array(
        OssClient::OSS_KEY_MARKER => null,
        OssClient::OSS_VERSION_ID_MARKER => null,
        OssClient::OSS_MAX_KEYS => 200   // Tentukan jumlah maksimum versi objek yang akan ditampilkan. Pada contoh ini, maksimal 200 versi objek ditampilkan.
    );
    $result = $ossClient->listObjectVersions($bucket,$option);
    // Lihat informasi versi objek.
    foreach ($result->getObjectVersionList() as $key => $info){
        printf("key name: ".$info->getKey().PHP_EOL);
        printf("versionid: ".$info->getVersionId().PHP_EOL);
        printf("Is latest: ".$info->getIsLatest().PHP_EOL.PHP_EOL);
    }

    // Lihat informasi versi penanda hapus.
    foreach ($result->getDeleteMarkerList() as $key => $info){
        printf("del_maker key name: ".$info->getKey().PHP_EOL);
        printf("del_maker versionid: ".$info->getVersionId().PHP_EOL);
        printf("del_maker Is latest: ".$info->getIsLatest().PHP_EOL.PHP_EOL);
    }
} catch(OssException $e) {
    printf($e->getMessage() . "\n");
    return;
}

Fitur folder

OSS tidak memiliki konsep folder. Sebagai gantinya, semua elemen disimpan sebagai objek. Membuat folder sama artinya dengan membuat objek berukuran nol byte yang diakhiri dengan garis miring (/). Anda dapat mengunggah dan mengunduh objek ini. Konsol OSS menampilkan objek yang diakhiri dengan garis miring (/) sebagai folder.

Anda dapat menggunakan parameter delimiter dan prefix untuk mensimulasikan folder.

  • Jika Anda menyetel parameter prefix ke nama folder, objek yang namanya memiliki awalan tersebut akan ditampilkan. Artinya, semua objek dan subdirektori dalam folder tersebut dikembalikan.

  • Jika Anda menyetel parameter prefix dan menyetel parameter delimiter ke garis miring (/), hanya objek dan subdirektori dalam folder tersebut yang ditampilkan. Subdirektori dalam folder tersebut dikembalikan sebagai CommonPrefixes. Objek dan folder dalam subdirektori tidak ditampilkan.

  • Daftar versi objek dalam direktori root

    Kode berikut memberikan contoh cara menampilkan versi objek dalam direktori root bucket examplebucket.

    <?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 disetel.
    $provider = new EnvironmentVariableCredentialsProvider();
    // Ganti yourEndpoint dengan titik akhir wilayah tempat bucket berada. Misalnya, untuk wilayah China (Hangzhou), setel titik akhir ke https://oss-cn-hangzhou.aliyuncs.com.
    $endpoint = "yourEndpoint";
    // Tentukan nama bucket. Misalnya, examplebucket.
    $bucket= "examplebucket";
    
    $config = array(
            "provider" => $provider,
            "endpoint" => $endpoint,
            "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
            "region"=> "cn-hangzhou"
        );
        $ossClient = new OssClient($config);
    
    try{
        $option = array(
            OssClient::OSS_KEY_MARKER => null,
            OssClient::OSS_VERSION_ID_MARKER => null,
            OssClient::OSS_DELIMITER => "/",    // Setel pemisah ke garis miring (/).
        );
        $bool = true;
        while ($bool){
            $result = $ossClient->listObjectVersions($bucket,$option);
            // Lihat informasi versi objek.
            foreach ($result->getObjectVersionList() as $key => $info){
                printf("key name: {$info->getKey()}\n");
                printf("versionid: {$info->getVersionId()}\n");
                printf("Is latest: {$info->getIsLatest()}\n\n");
            }
    
            // Lihat informasi versi penanda hapus.
            foreach ($result->getDeleteMarkerList() as $key => $info){
                printf("del_maker key name: {$info->getKey()}\n");
                printf("del_maker versionid: {$info->getVersionId()}\n");
                printf("del_maker Is latest: {$info->getIsLatest()}\n\n");
            }
    
            if($result->getIsTruncated() === 'true'){
                $option[OssClient::OSS_KEY_MARKER] = $result->getNextKeyMarker();
                $option[OssClient::OSS_VERSION_ID_MARKER] = $result->getNextVersionIdMarker();
            }else{
                $bool = false;
            }
        }
    } catch(OssException $e) {
        printf($e->getMessage() . "\n");
        return;
    }                   
  • Daftar versi objek dalam direktori tertentu

    Kode berikut memberikan contoh cara menampilkan versi objek dalam direktori test bucket examplebucket.

    <?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 disetel.
    $provider = new EnvironmentVariableCredentialsProvider();
    // Ganti yourEndpoint dengan titik akhir wilayah tempat bucket berada. Misalnya, untuk wilayah China (Hangzhou), setel titik akhir ke https://oss-cn-hangzhou.aliyuncs.com.
    $endpoint = "yourEndpoint";
    // Tentukan nama bucket. Misalnya, examplebucket.
    $bucket= "examplebucket";
    
    $config = array(
            "provider" => $provider,
            "endpoint" => $endpoint,
            "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
            "region"=> "cn-hangzhou"
        );
        $ossClient = new OssClient($config);
    
    try{
        $option = array(
            OssClient::OSS_KEY_MARKER => null,
            OssClient::OSS_VERSION_ID_MARKER => null,
            OssClient::OSS_DELIMITER => "/",    // Setel pemisah ke garis miring (/).
            OssClient::OSS_PREFIX => "test/",   // Tampilkan versi objek dalam folder test.
        );
        $bool = true;
        while ($bool){
            $result = $ossClient->listObjectVersions($bucket,$option);
            // Lihat informasi versi objek.
            foreach ($result->getObjectVersionList() as $key => $info){
                printf("key name: {$info->getKey()}\n");
                printf("versionid: {$info->getVersionId()}\n");
                printf("Is latest: {$info->getIsLatest()}\n\n");
            }
    
            // Lihat informasi versi penanda hapus.
            foreach ($result->getDeleteMarkerList() as $key => $info){
                printf("del_maker key name: {$info->getKey()}\n");
                printf("del_maker versionid: {$info->getVersionId()}\n");
                printf("del_maker Is latest: {$info->getIsLatest()}\n\n");
            }
    
            if($result->getIsTruncated() === 'true'){
                $option[OssClient::OSS_KEY_MARKER] = $result->getNextKeyMarker();
                $option[OssClient::OSS_VERSION_ID_MARKER] = $result->getNextVersionIdMarker();
            }else{
                $bool = false;
            }
        }
    } catch(OssException $e) {
        printf($e->getMessage() . "\n");
        return;
    }