全部产品
Search
文档中心

Object Storage Service:Daftar objek (PHP SDK V1)

更新时间:Nov 30, 2025

Topik ini menjelaskan cara mendaftar semua objek, sejumlah objek tertentu, dan objek yang namanya mengandung awalan tertentu dalam bucket Object Storage Service (OSS).

Catatan penggunaan

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

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

  • Untuk mendaftar objek, Anda harus memiliki izin oss:ListObjects. Untuk informasi selengkapnya, lihat Lampirkan kebijakan kustom ke RAM user.

Daftar objek

Anda dapat memanggil metode listObjects atau listObjectsV2 untuk mendaftar objek di direktori root bucket tertentu. Subdirektori dan objek di dalam subdirektori tidak didaftarkan.

  • Gunakan metode listObjects

    Kode berikut menunjukkan cara memanggil metode listObjects untuk mendaftar objek di direktori root bucket bernama examplebucket. Subdirektori dan objek di dalam subdirektori tidak didaftarkan. Secara default, 100 objek dikembalikan.

    <?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\Core\OssException;
    
    try {
        // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
        $provider = new EnvironmentVariableCredentialsProvider();
        // Contoh berikut menggunakan titik akhir wilayah China (Hangzhou). Ganti titik akhir dengan titik akhir yang sebenarnya.
        $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
        // Tentukan nama bucket. Contoh: examplebucket.
        $bucket= "examplebucket";
        $config = array(
            "provider" => $provider,
            "endpoint" => $endpoint, 
            "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
            "region"=> "cn-hangzhou"       
        );
        $ossClient = new OssClient($config);
        $listObjectInfo = $ossClient->listObjects($bucket);
        printf("Bucket Name: %s". "\n",$listObjectInfo->getBucketName());
        printf("Prefix: %s". "\n",$listObjectInfo->getPrefix());
        printf("Marker: %s". "\n",$listObjectInfo->getMarker());
        printf("Next Marker: %s". "\n",$listObjectInfo->getNextMarker());
        printf("Max Keys: %s". "\n",$listObjectInfo->getMaxKeys());
        printf("Delimiter: %s". "\n",$listObjectInfo->getDelimiter());
        printf("Is Truncated: %s". "\n",$listObjectInfo->getIsTruncated());
        $objectList = $listObjectInfo->getObjectList();
        $prefixList = $listObjectInfo->getPrefixList();
        if (!empty($objectList)) {
            print("objectList:\n");
            foreach ($objectList as $objectInfo) {
                printf("Object Name: %s". "\n",$objectInfo->getKey());
                printf("Object Size: %s". "\n",$objectInfo->getSize());
                printf("Object Type: %s". "\n",$objectInfo->getType());
                printf("Object ETag: %s". "\n",$objectInfo->getETag());
                printf("Object Last Modified: %s". "\n",$objectInfo->getLastModified());
                printf("Object Storage Class: %s". "\n",$objectInfo->getStorageClass());
    
                if ($objectInfo->getRestoreInfo()){
                    printf("Restore Info: %s". "\n",$objectInfo->getRestoreInfo() );
                }
    
                if($objectInfo->getOwner()){
                    printf("Owner Id:".$objectInfo->getOwner()->getId() . "\n");
                    printf("Owner Name:".$objectInfo->getOwner()->getDisplayName() . "\n");
                }
            }
        }
        if (!empty($prefixList)) {
            print("prefixList: \n");
            foreach ($prefixList as $prefixInfo) {
                printf("Common Prefix:%s\n",$prefixInfo->getPrefix());
            }
        }
    } catch (OssException $e) {
        printf($e->getMessage() . "\n");
        return;
    }
    
  • Metode listObjectsV2

    Kode berikut menunjukkan cara menggunakan metode listObjectsV2 untuk mendaftar objek di direktori root bucket bernama examplebucket. Operasi ini tidak mendaftar subdirektori atau objek di dalamnya. Secara default, hingga 100 objek dikembalikan.

    <?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\Core\OssException;
    
    try {
        // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
        $provider = new EnvironmentVariableCredentialsProvider();
        // Contoh berikut menggunakan titik akhir wilayah China (Hangzhou). Ganti titik akhir dengan titik akhir yang sebenarnya.
        $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
        // Tentukan nama bucket. Contoh: examplebucket.
        $bucket= "examplebucket";
        $config = array(
            "provider" => $provider,
            "endpoint" => $endpoint, 
            "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
            "region"=> "cn-hangzhou"       
        );
        $ossClient = new OssClient($config);
        $listObjectInfo = $ossClient->listObjectsV2($bucket);
        printf("Bucket Name: %s". "\n",$listObjectInfo->getBucketName());
        printf("Prefix: %s". "\n",$listObjectInfo->getPrefix());
        printf("Next Continuation Token: %s". "\n",$listObjectInfo->getNextContinuationToken());
        printf("Continuation Token: %s". "\n",$listObjectInfo->getContinuationToken());
        printf("Max Keys: %s". "\n",$listObjectInfo->getMaxKeys());
        printf("Key Count: %s". "\n",$listObjectInfo->getKeyCount());
        printf("Delimiter: %s". "\n",$listObjectInfo->getDelimiter());
        printf("Is Truncated: %s". "\n",$listObjectInfo->getIsTruncated());
        printf("Start After: %s". "\n",$listObjectInfo->getStartAfter());
        $objectList = $listObjectInfo->getObjectList(); 
        $prefixList = $listObjectInfo->getPrefixList();
        if (!empty($objectList)) {
            print("objectList:\n");
            foreach ($objectList as $objectInfo) {
                printf("Object Name: %s". "\n",$objectInfo->getKey());
                printf("Object Size: %s". "\n",$objectInfo->getSize());
                printf("Object Type: %s". "\n",$objectInfo->getType());
                printf("Object ETag: %s". "\n",$objectInfo->getETag());
                printf("Object Last Modified: %s". "\n",$objectInfo->getLastModified());
                printf("Object Storage Class: %s". "\n",$objectInfo->getStorageClass());
    
                if ($objectInfo->getRestoreInfo()){
                    printf("Restore Info: %s". "\n",$objectInfo->getRestoreInfo() );
                }
    
                if($objectInfo->getOwner()){
                    printf("Owner Id:".$objectInfo->getOwner()->getId() . "\n");
                    printf("Owner Name:".$objectInfo->getOwner()->getDisplayName() . "\n");
                }
            }
        }
        if (!empty($prefixList)) {
            print("prefixList: \n");
            foreach ($prefixList as $prefixInfo) {
                printf("Common Prefix:%s\n",$prefixInfo->getPrefix());
            }
        }
    } catch (OssException $e) {
        printf($e->getMessage() . "\n");
        return;
    }
    
    

Daftar jumlah objek tertentu

Anda dapat memanggil metode listObjects atau listObjectsV2 untuk mendaftar jumlah objek tertentu dalam sebuah bucket.

  • Gunakan metode listObjects

    Kode berikut menunjukkan cara memanggil metode listObjects untuk mendaftar 200 objek dalam bucket bernama 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, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. 
    $provider = new EnvironmentVariableCredentialsProvider();
    // Contoh berikut menggunakan titik akhir wilayah China (Hangzhou). Ganti titik akhir dengan titik akhir yang sebenarnya.
    $endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
    // Tentukan nama bucket. Contoh: examplebucket.
    $bucket= "examplebucket";
    
    $config = array(
            "provider" => $provider,
            "endpoint" => $endpoint,
            "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
            "region"=> "cn-hangzhou"
        );
        $ossClient = new OssClient($config);
    // Tetapkan jumlah maksimum objek yang dikembalikan menjadi 200.
    $maxkeys = 200;
    $options = array(
      'max-keys' => $maxkeys,
    );
    try {
      $listObjectInfo = $ossClient->listObjects($bucket, $options);
    } catch (OssException $e) {
      printf($e->getMessage() . "\n");
        return;
    }
    
    $objectList = $listObjectInfo->getObjectList(); 
    if (!empty($objectList)) {
      print("objectList:\n");
      foreach ($objectList as $objectInfo) {
          print($objectInfo->getKey() . "\n");
      }
    }
  • Gunakan metode listObjectsV2

    Kode berikut menunjukkan cara memanggil metode listObjectsV2 untuk mendaftar 200 objek dalam bucket bernama 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, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. 
    $provider = new EnvironmentVariableCredentialsProvider();
    // Contoh berikut menggunakan titik akhir wilayah China (Hangzhou). Ganti titik akhir dengan titik akhir yang sebenarnya.
    $endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
    // Tentukan nama bucket. Contoh: examplebucket.
    $bucket= "examplebucket";
    
    $config = array(
            "provider" => $provider,
            "endpoint" => $endpoint,
            "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
            "region"=> "cn-hangzhou"
        );
        $ossClient = new OssClient($config);
    // Tetapkan jumlah maksimum objek yang dikembalikan menjadi 200.
    $maxkeys = 200;
    $options = array(
      'max-keys' => $maxkeys,
    );
    try {
      $listObjectInfo = $ossClient->listObjectsV2($bucket, $options);
    } catch (OssException $e) {
      printf($e->getMessage() . "\n");
        return;
    }
    
    $objectList = $listObjectInfo->getObjectList(); 
    if (!empty($objectList)) {
      print("objectList:\n");
      foreach ($objectList as $objectInfo) {
          print($objectInfo->getKey() . "\n");
      }
    }

Daftar objek dengan awalan tertentu

Anda dapat memanggil metode listObjects atau listObjectsV2 untuk mendaftar objek dengan awalan tertentu dalam sebuah bucket.

  • Gunakan metode listObjects

    Kode berikut menunjukkan cara memanggil metode listObjects untuk mendaftar objek dengan awalan `dir` dalam bucket bernama 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, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. 
    $provider = new EnvironmentVariableCredentialsProvider();
    // Contoh berikut menggunakan titik akhir wilayah China (Hangzhou). Ganti titik akhir dengan titik akhir yang sebenarnya.
    $endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
    // Tentukan nama bucket. Contoh: examplebucket.
    $bucket= "examplebucket";
    
    $config = array(
            "provider" => $provider,
            "endpoint" => $endpoint,
            "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
            "region"=> "cn-hangzhou"
        );
        $ossClient = new OssClient($config);
    // Tetapkan awalan menjadi dir/.
    $prefix = 'dir/';
    $options = array(
      'prefix' => $prefix,
    );
    try {
      $listObjectInfo = $ossClient->listObjects($bucket, $options);
    } catch (OssException $e) {
      printf($e->getMessage() . "\n");
        return;
    }
    
    $objectList = $listObjectInfo->getObjectList();
    if (!empty($objectList)) {
      print("objectList:\n");
      foreach ($objectList as $objectInfo) {
          print($objectInfo->getKey() . "\n");
      }
    }
  • Gunakan metode listObjectsV2

    Kode berikut menunjukkan cara memanggil metode listObjectsV2 untuk mendaftar objek dengan awalan `dir` dalam bucket bernama 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, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. 
    $provider = new EnvironmentVariableCredentialsProvider();
    // Contoh berikut menggunakan titik akhir wilayah China (Hangzhou). Ganti titik akhir dengan titik akhir yang sebenarnya.
    $endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
    // Tentukan nama bucket. Contoh: examplebucket.
    $bucket= "examplebucket";
    
    $config = array(
            "provider" => $provider,
            "endpoint" => $endpoint,
            "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
            "region"=> "cn-hangzhou"
        );
        $ossClient = new OssClient($config);
    // Tetapkan awalan menjadi dir/.
    $prefix = 'dir/';
    $options = array(
      'prefix' => $prefix,
    );
    try {
      $listObjectInfo = $ossClient->listObjectsV2($bucket, $options);
    } catch (OssException $e) {
      printf($e->getMessage() . "\n");
        return;
    }
    
    $objectList = $listObjectInfo->getObjectList();
    if (!empty($objectList)) {
      print("objectList:\n");
      foreach ($objectList as $objectInfo) {
          print($objectInfo->getKey() . "\n");
      }
    }

Daftar objek secara alfabetis setelah nama objek tertentu

Anda dapat memanggil metode listObjects atau listObjectsV2 untuk mendaftar objek yang secara alfabetis berada setelah nama objek tertentu.

  • Gunakan metode listObjects

    Kode berikut menunjukkan cara memanggil metode listObjects untuk mendaftar objek yang secara alfabetis berada setelah `test.txt` dalam bucket bernama 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, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. 
    $provider = new EnvironmentVariableCredentialsProvider();
    // Contoh berikut menggunakan titik akhir wilayah China (Hangzhou). Ganti titik akhir dengan titik akhir yang sebenarnya.
    $endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
    // Tentukan nama bucket. Contoh: examplebucket.
    $bucket= "examplebucket";
    
    $config = array(
            "provider" => $provider,
            "endpoint" => $endpoint,
            "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
            "region"=> "cn-hangzhou"
        );
        $ossClient = new OssClient($config);
    // Tetapkan marker ke test.txt. Parameter ini menentukan bahwa objek dikembalikan secara alfabetis mulai dari objek yang ditentukan oleh marker.
    $marker = "test.txt";
    $options = array(
      OssClient::OSS_MARKER=>$marker
    );
    try {
      $listObjectInfo = $ossClient->listObjects($bucket, $options);
    } catch (OssException $e) {
      printf($e->getMessage() . "\n");
        return;
    }
    
    $objectList = $listObjectInfo->getObjectList(); 
    if (!empty($objectList)) {
      print("objectList:\n");
      foreach ($objectList as $objectInfo) {
          print($objectInfo->getKey() . "\n");
      }
    }
  • Gunakan metode listObjectsV2

    Kode berikut menunjukkan cara memanggil metode listObjectsV2 untuk mendaftar objek yang secara alfabetis berada setelah `test.txt` dalam bucket bernama 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, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. 
    $provider = new EnvironmentVariableCredentialsProvider();
    // Contoh berikut menggunakan titik akhir wilayah China (Hangzhou). Ganti titik akhir dengan titik akhir yang sebenarnya.
    $endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
    // Tentukan nama bucket. Contoh: examplebucket.
    $bucket= "examplebucket";
    
    $config = array(
            "provider" => $provider,
            "endpoint" => $endpoint,
            "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
            "region"=> "cn-hangzhou"
        );
        $ossClient = new OssClient($config);
    // Tetapkan startAfter ke test.txt. Parameter ini menentukan bahwa objek dikembalikan secara alfabetis mulai dari objek yang ditentukan oleh startAfter.
    $startAfter = "test.txt";
    $options = array(
      OssClient::OSS_START_AFTER=>$startAfter
    );
    try {
      $listObjectInfo = $ossClient->listObjectsV2($bucket, $options);
    } catch (OssException $e) {
      printf($e->getMessage() . "\n");
        return;
    }
    
    $objectList = $listObjectInfo->getObjectList();
    if (!empty($objectList)) {
      print("objectList:\n");
      foreach ($objectList as $objectInfo) {
          print($objectInfo->getKey() . "\n");
      }
    }

Daftar semua objek per halaman

Anda dapat memanggil metode listObjects atau listObjectsV2 untuk mendaftar semua objek secara terpaginasi. Gunakan parameter maxKeys untuk menentukan jumlah objek yang dikembalikan pada setiap halaman.

  • Gunakan metode listObjects

    Kode berikut menunjukkan cara memanggil metode listObjects untuk mendaftar semua objek dalam bucket bernama examplebucket secara terpaginasi.

    <?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, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. 
    $provider = new EnvironmentVariableCredentialsProvider();
    // Contoh berikut menggunakan titik akhir wilayah China (Hangzhou). Ganti titik akhir dengan titik akhir yang sebenarnya.
    $endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
    // Tentukan nama bucket. Contoh: examplebucket.
    $bucket= "examplebucket";
    
    $config = array(
            "provider" => $provider,
            "endpoint" => $endpoint,
            "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
            "region"=> "cn-hangzhou"
        );
        $ossClient = new OssClient($config);
    $options = array(
        // Tetapkan jumlah objek yang dikembalikan pada setiap halaman menjadi 200.
        OssClient::OSS_MAX_KEYS=>200
    );
    do{
        $result = $ossClient->listObjects($bucket,$options);
        $objectList = $result->getObjectList();
        print("objectList:\n");
        foreach ($objectList as $objectInfo) {
            print($objectInfo->getKey() . "\n");
        }
        $options[OssClient::OSS_MARKER] = $result->getNextMarker();
    }while($result->getIsTruncated() === 'true');
  • Gunakan metode listObjectsV2

    Kode berikut menunjukkan cara memanggil metode listObjectsV2 untuk mendaftar semua objek dalam bucket bernama examplebucket secara terpaginasi.

    <?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, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. 
    $provider = new EnvironmentVariableCredentialsProvider();
    // Contoh berikut menggunakan titik akhir wilayah China (Hangzhou). Ganti titik akhir dengan titik akhir yang sebenarnya.
    $endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
    // Tentukan nama bucket. Contoh: examplebucket.
    $bucket= "examplebucket";
    
    $config = array(
            "provider" => $provider,
            "endpoint" => $endpoint,
            "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
            "region"=> "cn-hangzhou"
        );
        $ossClient = new OssClient($config);
    $options = array(
        // Tetapkan jumlah objek yang dikembalikan pada setiap halaman menjadi 200.
        OssClient::OSS_MAX_KEYS=>200
    );
    do{
        $result = $ossClient->listObjectsV2($bucket,$options);
        $objectList = $result->getObjectList();
        print("objectList:\n");
        foreach ($objectList as $objectInfo) {
            print($objectInfo->getKey() . "\n");
        }
        $options[OssClient::OSS_CONTINUATION_TOKEN] = $result->getNextContinuationToken();
    }while($result->getIsTruncated() === 'true');

Daftar objek dengan awalan tertentu per halaman

Anda dapat memanggil metode listObjects atau listObjectsV2 untuk mendaftar objek dengan awalan tertentu secara terpaginasi.

  • Gunakan metode listObjects

    Kode berikut menunjukkan cara memanggil metode listObjects untuk mendaftar objek dengan awalan `dir` dalam bucket bernama examplebucket secara terpaginasi.

    <?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, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. 
    $provider = new EnvironmentVariableCredentialsProvider();
    // Contoh berikut menggunakan titik akhir wilayah China (Hangzhou). Ganti titik akhir dengan titik akhir yang sebenarnya.
    $endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
    // Tentukan nama bucket. Contoh: examplebucket.
    $bucket= "examplebucket";
    
    $config = array(
            "provider" => $provider,
            "endpoint" => $endpoint,
            "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
            "region"=> "cn-hangzhou"
        );
        $ossClient = new OssClient($config);
    // Tetapkan jumlah objek yang dikembalikan pada setiap halaman menjadi 100.
    $maxKeys = 100;
    // Tentukan awalan. Contoh: dir/.
    $prefix = 'dir/';
    $options = array(
        OssClient::OSS_MAX_KEYS =>$maxKeys,
        OssClient::OSS_PREFIX =>$prefix
    );
    do{
        $result = $ossClient->listObjects($bucket,$options);
        $objectList = $result->getObjectList();
        print("objectList:\n");
        foreach ($objectList as $objectInfo) {
            print($objectInfo->getKey() . "\n");
        }
        $options[OssClient::OSS_MARKER] = $result->getNextMarker();
    }while($result->getIsTruncated() === 'true');
  • Gunakan metode listObjectsV2

    Kode berikut menunjukkan cara memanggil metode listObjectsV2 untuk mendaftar objek dengan awalan `dir` dalam bucket bernama examplebucket secara terpaginasi.

    <?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, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. 
    $provider = new EnvironmentVariableCredentialsProvider();
    // Contoh berikut menggunakan titik akhir wilayah China (Hangzhou). Ganti titik akhir dengan titik akhir yang sebenarnya.
    $endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
    // Tentukan nama bucket. Contoh: examplebucket.
    $bucket= "examplebucket";
    
    $config = array(
            "provider" => $provider,
            "endpoint" => $endpoint,
            "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
            "region"=> "cn-hangzhou"
        );
        $ossClient = new OssClient($config);
    // Tetapkan jumlah objek yang dikembalikan pada setiap halaman menjadi 100.
    $maxKeys = 100;
    // Tentukan awalan. Contoh: dir/.
    $prefix = 'dir/';
    $options = array(
        OssClient::OSS_MAX_KEYS =>$maxKeys,
        OssClient::OSS_PREFIX =>$prefix
    );
    do{
        $result = $ossClient->listObjectsV2($bucket,$options);
        $objectList = $result->getObjectList();
        print("objectList:\n");
        foreach ($objectList as $objectInfo) {
            print($objectInfo->getKey() . "\n");
        }
        $options[OssClient::OSS_CONTINUATION_TOKEN] = $result->getNextContinuationToken();
    }while($result->getIsTruncated() === 'true');

Tentukan encoding nama objek

Jika nama objek mengandung karakter khusus, Anda harus meng-encode nama objek tersebut untuk transmisi. OSS hanya mendukung URL encoding.

  • Tanda kutip tunggal (')

  • Tanda kutip ganda (")

  • Ampersand (&)

  • Tanda kurung siku (< >)

  • Koma enumerasi (、)

  • Karakter Tionghoa

Anda dapat memanggil metode listObjects atau listObjectsV2 untuk menentukan encoding nama objek.

  • Gunakan metode listObjects

    Kode berikut menunjukkan cara memanggil metode listObjects untuk menentukan encoding nama objek.

    <?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, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. 
    $provider = new EnvironmentVariableCredentialsProvider();
    // Contoh berikut menggunakan titik akhir wilayah China (Hangzhou). Ganti titik akhir dengan titik akhir yang sebenarnya.
    $endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
    // Tentukan nama bucket. Contoh: examplebucket.
    $bucket= "examplebucket";
    
    $config = array(
            "provider" => $provider,
            "endpoint" => $endpoint,
            "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
            "region"=> "cn-hangzhou"
        );
        $ossClient = new OssClient($config);
    $options = array(
        // Tetapkan jenis encoding nama objek menjadi URL.
        OssClient::OSS_ENCODING_TYPE=>'url',
        // Tetapkan jumlah objek yang dikembalikan pada setiap halaman menjadi 20.
        OssClient::OSS_MAX_KEYS=>20
    );
    do{
        $result = $ossClient->listObjects($bucket,$options);
        $objectList = $result->getObjectList();
        print("objectList:\n");
        foreach ($objectList as $objectInfo) {
            print($objectInfo->getKey() . "\n");
        }
    
        print("prefix:\n");
        $prefixList = $result->getPrefixList();
        foreach ($prefixList as $prefixInfo) {
            print($prefixInfo->getPrefix() . "\n");
        }
    
        if($result->getDelimiter() != null){
            printf("delimiter:".$result->getDelimiter().PHP_EOL);
        }
    
        if($result->getMarker() != null){
            printf("marker:".$result->getMarker().PHP_EOL);
        }
    
         $options[OssClient::OSS_MARKER] = $result->getNextMarker();
    }while($result->getIsTruncated() === 'true');
  • Gunakan metode listObjectsV2

    Kode berikut menunjukkan cara memanggil metode listObjectsV2 untuk menentukan encoding nama objek.

    <?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, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. 
    $provider = new EnvironmentVariableCredentialsProvider();
    // Contoh berikut menggunakan titik akhir wilayah China (Hangzhou). Ganti titik akhir dengan titik akhir yang sebenarnya.
    $endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
    // Tentukan nama bucket. Contoh: examplebucket.
    $bucket= "examplebucket";
    
    $config = array(
            "provider" => $provider,
            "endpoint" => $endpoint,
            "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
            "region"=> "cn-hangzhou"
        );
        $ossClient = new OssClient($config);
    $options = array(
        // Tetapkan jenis encoding nama objek menjadi URL.
        OssClient::OSS_ENCODING_TYPE=>'url',
        // Tetapkan jumlah objek yang dikembalikan pada setiap halaman menjadi 20.
        OssClient::OSS_MAX_KEYS=>20
    );
    do{
        $result = $ossClient->listObjectsV2($bucket,$options);
        $objectList = $result->getObjectList();
        print("objectList:\n");
        foreach ($objectList as $objectInfo) {
            print($objectInfo->getKey() . "\n");
        }
    
        print("prefix:\n");
        $prefixList = $result->getPrefixList();
        foreach ($prefixList as $prefixInfo) {
            print($prefixInfo->getPrefix() . "\n");
        }
    
        if($result->getDelimiter() != null){
            printf("delimiter:".$result->getDelimiter().PHP_EOL);
        }
    
        if($result->getStartAfter() != null){
            printf("start after:".$result->getStartAfter().PHP_EOL);
        }
    
        $options[OssClient::OSS_CONTINUATION_TOKEN] = $result->getNextContinuationToken();
    }while($result->getIsTruncated() === 'true');

Simulasikan direktori

OSS menggunakan struktur datar di mana semua data disimpan sebagai objek. Untuk mensimulasikan direktori, Anda dapat membuat objek berukuran 0 byte yang namanya diakhiri dengan garis miring (/). Anda dapat mengunggah dan mengunduh objek ini. Konsol OSS menampilkan objek yang namanya diakhiri dengan garis miring (/) sebagai direktori.

Anda dapat menggunakan parameter delimiter dan prefix untuk mensimulasikan fitur direktori:

  • Jika Anda menetapkan parameter `prefix` ke nama folder, objek yang namanya diawali dengan awalan ini akan didaftarkan. Ini secara rekursif mendaftar semua objek dan subdirektori di dalam folder tersebut.

  • Jika Anda menetapkan parameter `prefix` dan menetapkan parameter `delimiter` ke garis miring (/), hanya objek dan subdirektori di tingkat atas folder yang didaftarkan. Subdirektori dikembalikan dalam elemen `CommonPrefixes`, sedangkan objek dan folder di dalam subdirektori tersebut tidak didaftarkan.

Asumsikan sebuah bucket berisi objek oss.jpg, fun/test.jpg, fun/movie/001.avi, dan fun/movie/007.avi, dan pemisah folder adalah garis miring (/). Contoh berikut menunjukkan cara mendaftar objek dengan mensimulasikan direktori.

Daftar semua objek dalam bucket

Anda dapat memanggil metode listObjects atau listObjectsV2 untuk mendaftar semua objek dalam bucket tertentu.

  • Gunakan metode listObjects

    Kode berikut menunjukkan cara memanggil metode listObjects untuk mendaftar semua objek dalam bucket bernama 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';
    }
    require_once __DIR__ . '/Common.php';
    
    use OSS\Credentials\EnvironmentVariableCredentialsProvider;
    use OSS\OssClient;
    use OSS\CoreOssException;
    
    // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. 
    $provider = new EnvironmentVariableCredentialsProvider();
    // Contoh berikut menggunakan titik akhir wilayah China (Hangzhou). Ganti titik akhir dengan titik akhir yang sebenarnya.
    $endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
    // Tentukan nama bucket. Contoh: examplebucket.
    $bucket= "examplebucket";
    
    $config = array(
            "provider" => $provider,
            "endpoint" => $endpoint,
            "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
            "region"=> "cn-hangzhou"
        );
        $ossClient = new OssClient($config);
    $options = array(
      'delimiter' => '',
    );
    try {
      $listObjectInfo = $ossClient->listObjects($bucket,$options);
    } catch (OssException $e) {
      printf(__FUNCTION__ . ": FAILED\n");
      printf($e->getMessage() . "\n");
      return;
    }
    print(__FUNCTION__ . ": OK" . "\n");
    $objectList = $listObjectInfo->getObjectList();
    $prefixList = $listObjectInfo->getPrefixList();
    if (!empty($objectList)) {
      print("objectList:\n");
      foreach ($objectList as $objectInfo) {
        print($objectInfo->getKey() . "\n");
      }
    }
    if (!empty($prefixList)) {
      print("prefixList: \n");
      foreach ($prefixList as $prefixInfo) {
        print($prefixInfo->getPrefix() . "\n");
      }
    }
  • Gunakan metode listObjectsV2

    Kode berikut menunjukkan cara memanggil metode listObjectsV2 untuk mendaftar semua objek dalam bucket bernama 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';
    }
    require_once __DIR__ . '/Common.php';
    
    use OSS\Credentials\EnvironmentVariableCredentialsProvider;
    use OSS\OssClient;
    use OSS\CoreOssException;
    
    // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. 
    $provider = new EnvironmentVariableCredentialsProvider();
    // Contoh berikut menggunakan titik akhir wilayah China (Hangzhou). Ganti titik akhir dengan titik akhir yang sebenarnya.
    $endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
    // Tentukan nama bucket. Contoh: examplebucket.
    $bucket= "examplebucket";
    
    $config = array(
            "provider" => $provider,
            "endpoint" => $endpoint,
            "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
            "region"=> "cn-hangzhou"
        );
        $ossClient = new OssClient($config);
    $options = array(
      'delimiter' => '',
    );
    try {
      $listObjectInfo = $ossClient->listObjectsV2($bucket,$options);
    } catch (OssException $e) {
      printf(__FUNCTION__ . ": FAILED\n");
      printf($e->getMessage() . "\n");
      return;
    }
    print(__FUNCTION__ . ": OK" . "\n");
    $objectList = $listObjectInfo->getObjectList();
    $prefixList = $listObjectInfo->getPrefixList();
    if (!empty($objectList)) {
      print("objectList:\n");
      foreach ($objectList as $objectInfo) {
        print($objectInfo->getKey() . "\n");
      }
    }
    if (!empty($prefixList)) {
      print("prefixList: \n");
      foreach ($prefixList as $prefixInfo) {
        print($prefixInfo->getPrefix() . "\n");
      }
    }
  • Respons

    Respons berikut dikembalikan ketika Anda memanggil metode di atas untuk mendaftar semua objek dalam bucket examplebucket.

    objectList:
    fun/movie/001.avi
    fun/movie/007.avi
    fun/test.jpg
    oss.jpg

Daftar semua objek dalam direktori tertentu

Anda dapat memanggil metode listObjects atau listObjectsV2 untuk mendaftar semua objek dalam direktori fun/.

  • Gunakan metode listObjects

    Kode berikut menunjukkan cara memanggil metode listObjects untuk mendaftar semua objek dalam direktori fun/.

    <?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';
    }
    require_once __DIR__ . '/Common.php';
    
    use OSS\Credentials\EnvironmentVariableCredentialsProvider;
    use OSS\OssClient;
    use OSS\CoreOssException;
    
    // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. 
    $provider = new EnvironmentVariableCredentialsProvider();
    // Contoh berikut menggunakan titik akhir wilayah China (Hangzhou). Ganti titik akhir dengan titik akhir yang sebenarnya.
    $endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
    // Tentukan nama bucket. Contoh: examplebucket.
    $bucket= "examplebucket";
    
    $config = array(
            "provider" => $provider,
            "endpoint" => $endpoint,
            "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
            "region"=> "cn-hangzhou"
        );
        $ossClient = new OssClient($config);
    // Tetapkan direktori menjadi fun/.
    $prefix = 'fun/';
    $options = array(
      'prefix' => $prefix,
      'delimiter' => '',
    );
    try {
      $listObjectInfo = $ossClient->listObjects($bucket, $options);
    } catch (OssException $e) {
      printf(__FUNCTION__ . ": FAILED\n");
      printf($e->getMessage() . "\n");
      return;
    }
    print(__FUNCTION__ . ": OK" . "\n");
    $objectList = $listObjectInfo->getObjectList();
    $prefixList = $listObjectInfo->getPrefixList();
    if (!empty($objectList)) {
      print("objectList:\n");
      foreach ($objectList as $objectInfo) {
        print($objectInfo->getKey() . "\n");
      }
    }
    if (!empty($prefixList)) {
      print("prefixList: \n");
      foreach ($prefixList as $prefixInfo) {
        print($prefixInfo->getPrefix() . "\n");
      }
    }
  • Gunakan metode listObjectsV2

    Kode berikut menunjukkan cara memanggil metode listObjectsV2 untuk mendaftar semua objek dalam direktori fun/.

    <?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';
    }
    require_once __DIR__ . '/Common.php';
    
    use OSS\Credentials\EnvironmentVariableCredentialsProvider;
    use OSS\OssClient;
    use OSS\CoreOssException;
    
    // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. 
    $provider = new EnvironmentVariableCredentialsProvider();
    // Contoh berikut menggunakan titik akhir wilayah China (Hangzhou). Ganti titik akhir dengan titik akhir yang sebenarnya.
    $endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
    // Tentukan nama bucket. Contoh: examplebucket.
    $bucket= "examplebucket";
    
    $config = array(
            "provider" => $provider,
            "endpoint" => $endpoint,
            "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
            "region"=> "cn-hangzhou"
        );
        $ossClient = new OssClient($config);
    // Tetapkan nama direktori menjadi fun/.
    $prefix = 'fun/';
    $options = array(
      'prefix' => $prefix,
      'delimiter' => '',
    );
    try {
      $listObjectInfo = $ossClient->listObjectsV2($bucket, $options);
    } catch (OssException $e) {
      printf(__FUNCTION__ . ": FAILED\n");
      printf($e->getMessage() . "\n");
      return;
    }
    print(__FUNCTION__ . ": OK" . "\n");
    $objectList = $listObjectInfo->getObjectList();
    $prefixList = $listObjectInfo->getPrefixList();
    if (!empty($objectList)) {
      print("objectList:\n");
      foreach ($objectList as $objectInfo) {
        print($objectInfo->getKey() . "\n");
      }
    }
    if (!empty($prefixList)) {
      print("prefixList: \n");
      foreach ($prefixList as $prefixInfo) {
        print($prefixInfo->getPrefix() . "\n");
      }
    }
  • Hasil

    Respons berikut dikembalikan ketika Anda memanggil metode di atas untuk mendaftar semua objek dalam direktori fun/.

    objectList:
    fun/movie/001.avi
    fun/movie/007.avi
    fun/test.jpg

Daftar objek dan subdirektori dalam direktori

Anda dapat memanggil metode listObjects atau listObjectsV2 untuk mendaftar objek dan subdirektori dalam direktori fun/.

  • Gunakan metode listObjects

    Kode berikut menunjukkan cara memanggil metode listObjects untuk mendaftar objek dan subdirektori dalam direktori fun/.

    <?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';
    }
    require_once __DIR__ . '/Common.php';
    use OSS\Credentials\EnvironmentVariableCredentialsProvider;
    use OSS\OssClient;
    use OSS\CoreOssException;
    
    // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. 
    $provider = new EnvironmentVariableCredentialsProvider();
    // Contoh berikut menggunakan titik akhir wilayah China (Hangzhou). Ganti titik akhir dengan titik akhir yang sebenarnya.
    $endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
    // Tentukan nama bucket. Contoh: examplebucket.
    $bucket= "examplebucket";
    
     $config = array(
            "provider" => $provider,
            "endpoint" => $endpoint,
            "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
            "region"=> "cn-hangzhou"
        );
        $ossClient = new OssClient($config);
    // Tetapkan nama direktori menjadi fun/.
    $prefix = 'fun/';
    $delimiter = '/'; 
    $options = array(
      'delimiter' => $delimiter,
      'prefix' => $prefix,
    );
    try {
      $listObjectInfo = $ossClient->listObjects($bucket, $options);
    } catch (OssException $e) {
      printf(__FUNCTION__ . ": FAILED\n");
      printf($e->getMessage() . "\n");
      return;
    }
    print(__FUNCTION__ . ": OK" . "\n");
    $objectList = $listObjectInfo->getObjectList();
    $prefixList = $listObjectInfo->getPrefixList();
    if (!empty($objectList)) {
      print("objectList:\n");
      foreach ($objectList as $objectInfo) {
        print($objectInfo->getKey() . "\n");
      }
    }
    // Daftar commonPrefixs berisi semua subdirektori dalam direktori fun/.
    if (!empty($prefixList)) {
      print("prefixList: \n");
      foreach ($prefixList as $prefixInfo) {
        print($prefixInfo->getPrefix() . "\n");
      }
    }
  • Gunakan metode listObjectsV2

    Kode berikut menunjukkan cara memanggil metode listObjectsV2 untuk mendaftar objek dan subdirektori dalam direktori fun/.

    <?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';
    }
    require_once __DIR__ . '/Common.php';
    use OSS\Credentials\EnvironmentVariableCredentialsProvider;
    use OSS\OssClient;
    use OSS\CoreOssException;
    
    // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. 
    $provider = new EnvironmentVariableCredentialsProvider();
    // Contoh berikut menggunakan titik akhir wilayah China (Hangzhou). Ganti titik akhir dengan titik akhir yang sebenarnya.
    $endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
    // Tentukan nama bucket. Contoh: examplebucket.
    $bucket= "examplebucket";
    
     $config = array(
            "provider" => $provider,
            "endpoint" => $endpoint,
            "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
            "region"=> "cn-hangzhou"     
        );
        $ossClient = new OssClient($config);
    // Tetapkan nama direktori menjadi fun/.
    $prefix = 'fun/';
    $delimiter = '/';
    $options = array(
      'delimiter' => $delimiter,
      'prefix' => $prefix,
    );
    try {
      $listObjectInfo = $ossClient->listObjectsV2($bucket, $options);
    } catch (OssException $e) {
      printf(__FUNCTION__ . ": FAILED\n");
      printf($e->getMessage() . "\n");
      return;
    }
    print(__FUNCTION__ . ": OK" . "\n");
    $objectList = $listObjectInfo->getObjectList();
    $prefixList = $listObjectInfo->getPrefixList();
    if (!empty($objectList)) {
      print("objectList:\n");
      foreach ($objectList as $objectInfo) {
        print($objectInfo->getKey() . "\n");
      }
    }
    // Daftar commonPrefixs berisi semua subdirektori dalam direktori fun/.
    if (!empty($prefixList)) {
      print("prefixList: \n");
      foreach ($prefixList as $prefixInfo) {
        print($prefixInfo->getPrefix() . "\n");
      }
    }
  • Nilai kembalian

    Respons berikut dikembalikan ketika Anda memanggil metode di atas untuk mendaftar objek dan subdirektori dalam direktori fun/.

    objectList:
    fun/test.jpg
    prefixList:
    fun/movie/

Dapatkan ukuran objek dalam direktori tertentu

Anda dapat memanggil metode listObjects atau listObjectsV2 untuk mendapatkan ukuran objek dalam direktori fun/.

  • Gunakan metode listObjects

    Kode berikut menunjukkan cara memanggil metode listObjects untuk mendapatkan ukuran objek dalam direktori fun/.

    <?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';
    }
    require_once __DIR__ . '/Common.php';
    use OSS\Credentials\EnvironmentVariableCredentialsProvider;
    use OSS\OssClient;
    use OSS\CoreOssException;
    
    // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. 
    $provider = new EnvironmentVariableCredentialsProvider();
    // Contoh berikut menggunakan titik akhir wilayah China (Hangzhou). Ganti titik akhir dengan titik akhir yang sebenarnya.
    $endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
    // Tentukan nama bucket. Contoh: examplebucket.
    $bucket= "examplebucket";
    
    $config = array(
            "provider" => $provider,
            "endpoint" => $endpoint,
            "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
            "region"=> "cn-hangzhou"
        );
        $ossClient = new OssClient($config);
    // Tetapkan nama direktori menjadi fun/.
    $prefix = 'fun/';
    $delimiter = '';
    $nextMarker = '';
    $maxkeys = 1000;
    $options = array(
        'delimiter' => $delimiter,
        'prefix' => $prefix,
        'max-keys' => $maxkeys,
        'marker' => $nextMarker,
    );
    $bool = true;
    $size = 0;
    while ($bool){
        $result = $ossClient->listObjects($bucket,$options);
        foreach ($result->getObjectList() as $objInfo){
            printf("object name".$objInfo->getKey().":" . ($objInfo->getSize() / 1024) . "KB".PHP_EOL);
            $size+=$objInfo->getSize();
        }
        if($result->getIsTruncated() === 'true'){
            $options['marker'] = $result->getNextMarker();
        }else{
            $bool = false;
        }
    }
    printf($prefix.":" . ($size / 1024) . "KB".PHP_EOL);
  • Gunakan metode listObjectsV2

    Kode berikut menunjukkan cara memanggil metode listObjectsV2 untuk mendapatkan ukuran objek dalam direktori fun/.

    <?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';
    }
    require_once __DIR__ . '/Common.php';
    use OSS\Credentials\EnvironmentVariableCredentialsProvider;
    use OSS\OssClient;
    use OSS\CoreOssException;
    
    // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. 
    $provider = new EnvironmentVariableCredentialsProvider();
    // Contoh berikut menggunakan titik akhir wilayah China (Hangzhou). Ganti titik akhir dengan titik akhir yang sebenarnya.
    $endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
    // Tentukan nama bucket. Contoh: examplebucket.
    $bucket= "examplebucket";
    
    $config = array(
            "provider" => $provider,
            "endpoint" => $endpoint,
            "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
            "region"=> "cn-hangzhou"
        );
        $ossClient = new OssClient($config);
    // Tetapkan nama direktori menjadi fun/.
    $prefix = 'fun/';
    $delimiter = '';
    $nextMarker = '';
    $maxkeys = 1000;
    $options = array(
        'delimiter' => $delimiter,
        'prefix' => $prefix,
        'max-keys' => $maxkeys,
    );
    $bool = true;
    $size = 0;
    while ($bool){
        $result = $ossClient->listObjectsV2($bucket,$options);
        foreach ($result->getObjectList() as $objInfo){
            printf("object name".$objInfo->getKey().":" . ($objInfo->getSize() / 1024) . "KB".PHP_EOL);
            $size+=$objInfo->getSize();
        }
        if($result->getIsTruncated() === 'true'){
            $options[OssClient::OSS_CONTINUATION_TOKEN] = $result->getNextContinuationToken();
        }else{
            $bool = false;
        }
    }
    printf($prefix.":" . ($size / 1024) . "KB".PHP_EOL);
  • Nilai kembalian

    Respons berikut dikembalikan ketika Anda memanggil metode di atas untuk mendapatkan ukuran objek.

    object namefun/movie/001.avi:0.01953125KB
    object namefun/movie/007.avi:290.71875KB
    object namefun/test.jpg:144.216796875KB
    fun/:434.955078125KB

Referensi