All Products
Search
Document Center

Object Storage Service:Daftar objek

Last Updated:Jun 21, 2026

Objek dalam bucket diurutkan secara leksikografis secara default. Anda dapat menampilkan semua objek, menampilkan objek berdasarkan direktori, atau menyesuaikan jumlah objek yang dikembalikan per halaman.

Tampilkan semua objek

Operasi ini menampilkan semua objek dalam bucket.

SDK

Java

Untuk informasi selengkapnya, lihat Daftar objek (Java SDK V1).

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.*;
import java.util.List;

public class Demo {
    public static void main(String[] args) throws Exception {
        // Dalam contoh ini, endpoint wilayah Tiongkok (Hangzhou) digunakan. Tentukan endpoint aktual Anda.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tentukan nama bucket. Contoh: examplebucket.
        String bucketName = "examplebucket";
        // Tentukan jumlah maksimum objek yang dapat ditampilkan sekaligus.
        int maxKeys = 200;
        // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur wilayah ke cn-hangzhou.
        String region = "cn-hangzhou";

        // Buat instans OSSClient.
        // Panggil metode shutdown untuk melepaskan sumber daya ketika OSSClient tidak lagi digunakan.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
        OSS ossClient = OSSClientBuilder.create()
        .endpoint(endpoint)
        .credentialsProvider(credentialsProvider)
        .clientConfiguration(clientBuilderConfiguration)
        .region(region)               
        .build();

        try {
            String nextContinuationToken = null;
            ListObjectsV2Result result = null;

            // Tampilkan objek per halaman dengan menggunakan parameter nextContinuationToken yang terdapat dalam respons operasi daftar sebelumnya.
            do {
                ListObjectsV2Request listObjectsV2Request = new ListObjectsV2Request(bucketName).withMaxKeys(maxKeys);
                listObjectsV2Request.setContinuationToken(nextContinuationToken);
                result = ossClient.listObjectsV2(listObjectsV2Request);

                List<OSSObjectSummary> sums = result.getObjectSummaries();
                for (OSSObjectSummary s : sums) {
                    System.out.println("\t" + s.getKey());
                }

                nextContinuationToken = result.getNextContinuationToken();

            } while (result.isTruncated());
        } catch (OSSException oe) {
            System.out.println("Terjadi OSSException, yang berarti permintaan Anda sampai ke OSS, "
                    + "tetapi ditolak dengan respons kesalahan karena suatu alasan.");
            System.out.println("Pesan Kesalahan:" + oe.getErrorMessage());
            System.out.println("Kode Kesalahan:" + oe.getErrorCode());
            System.out.println("ID Permintaan:" + oe.getRequestId());
            System.out.println("ID Host:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Terjadi ClientException, yang berarti client mengalami "
                    + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                    + "seperti tidak dapat mengakses jaringan.");
            System.out.println("Pesan Kesalahan:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

Python

Untuk informasi selengkapnya, lihat Daftar objek (Python SDK V2).

import argparse
import alibabacloud_oss_v2 as oss

# Buat parser parameter baris perintah.
parser = argparse.ArgumentParser(description="contoh daftar objek v2")
# Tentukan parameter --region, yang menentukan wilayah tempat bucket berada. Parameter baris perintah ini wajib diisi.
parser.add_argument('--region', help='Wilayah tempat bucket berada.', required=True)
# Tentukan parameter --bucket, yang menentukan nama bucket. Parameter baris perintah ini wajib diisi.
parser.add_argument('--bucket', help='Nama bucket.', required=True)
# Tentukan parameter --endpoint, yang menentukan endpoint yang dapat digunakan layanan lain untuk mengakses OSS. Parameter baris perintah ini opsional.
parser.add_argument('--endpoint', help='Nama domain yang dapat digunakan layanan lain untuk mengakses OSS')

def main():
    args = parser.parse_args()  # Uraikan parameter baris perintah.

    # Peroleh kredensial akses dari variabel lingkungan untuk autentikasi.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Muat konfigurasi default SDK dan tentukan penyedia kredensial.
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    # Atur wilayah dalam konfigurasi sesuai yang ditentukan di baris perintah.
    cfg.region = args.region
    # Jika parameter endpoint disediakan, tentukan endpoint tersebut.
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # Gunakan konfigurasi untuk membuat instans OSSClient.
    client = oss.Client(cfg)

    # Buat paginator untuk memungkinkan operasi ListObjectsV2 menampilkan objek.
    paginator = client.list_objects_v2_paginator()

    # Telusuri setiap halaman objek yang ditampilkan.
    for page in paginator.iter_page(oss.ListObjectsV2Request(
            bucket=args.bucket
        )
    ):
        # Telusuri setiap objek pada setiap halaman.
        for o in page.contents:
            # Tampilkan nama, ukuran, dan waktu modifikasi terakhir objek.
            print(f'Object: {o.key}, {o.size}, {o.last_modified}')

if __name__ == "__main__":
    main() # Tentukan titik masuk dalam fungsi utama skrip saat skrip dijalankan langsung.

Go

Untuk informasi selengkapnya, lihat Daftar objek (Go SDK V2).

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)

// Definisikan variabel global.
var (
	region     string // Wilayah tempat bucket berada.
	bucketName string // Nama bucket.
)

// Tentukan fungsi init yang digunakan untuk menginisialisasi parameter baris perintah.
func init() {
	flag.StringVar(&region, "region", "", "Wilayah tempat bucket berada.")
	flag.StringVar(&bucketName, "bucket", "", "Nama `bucket`.")
}

func main() {
	// Uraikan parameter baris perintah.
	flag.Parse()

	// Periksa apakah nama bucket telah ditentukan.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, nama bucket wajib diisi")
	}

	// Periksa apakah wilayah telah ditentukan.
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, wilayah wajib diisi")
	}

	// Muat konfigurasi default dan tentukan penyedia kredensial serta wilayah.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// Buat klien OSS.
	client := oss.NewClient(cfg)

	// Buat permintaan untuk menampilkan objek.
	request := &oss.ListObjectsV2Request{
		Bucket: oss.Ptr(bucketName),
	}

	// Buat paginator.
	p := client.NewListObjectsV2Paginator(request)

	// Inisialisasi penghitung nomor halaman.
	var i int
	log.Println("Objects:")

	// Telusuri setiap halaman dalam paginator.
	for p.HasNext() {
		i++

		// Peroleh data pada halaman berikutnya.
		page, err := p.NextPage(context.TODO())
		if err != nil {
			log.Fatalf("gagal mendapatkan halaman %v, %v", i, err)
		}

		// Tampilkan informasi tentang setiap objek pada halaman.
		for _, obj := range page.Contents {
			log.Printf("Object:%v, %v, %v\n", oss.ToString(obj.Key), obj.Size, oss.ToTime(obj.LastModified))
		}
	}
}

PHP

Untuk informasi selengkapnya, lihat Daftar objek (PHP SDK V2).

<?php

// Sertakan file autoload untuk memuat library dependensi.
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], // (Wajib) Tentukan wilayah tempat bucket berada.
    "endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False], // (Opsional) Tentukan endpoint yang dapat digunakan layanan lain untuk mengakses OSS.
    "bucket" => ['help' => 'Nama bucket', 'required' => True], // (Wajib) Tentukan nama bucket.
];

// Konversi deskripsi parameter menjadi daftar opsi panjang yang diperlukan oleh getopt.
// Tambahkan tanda titik dua (:) di akhir setiap parameter untuk menunjukkan bahwa nilai diperlukan.
$longopts = \array_map(function ($key) {
    return "$key:";
}, array_keys($optsdesc));

// Uraikan parameter baris perintah.
$options = getopt("", $longopts);

// Periksa apakah parameter wajib telah dikonfigurasi.
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help']; // Peroleh informasi bantuan tentang parameter.
        echo "Error: argumen berikut wajib diisi: --$key, $help" . PHP_EOL;
        exit(1); // Jika parameter wajib tidak dikonfigurasi, keluar dari program.
    }
}

// Peroleh nilai dari parameter yang telah diuraikan.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.

// Muat kredensial akses dari variabel lingkungan.
// EnvironmentVariableCredentialsProvider membaca ID AccessKey dan rahasia AccessKey
// dari variabel lingkungan, sehingga kredensial tidak tersimpan dalam kode sumber Anda.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// Gunakan konfigurasi SDK default.
$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 endpoint jika endpoint disediakan.
}

// Buat klien OSS.
$client = new Oss\Client($cfg);

// Gunakan ListObjectsV2Paginator untuk menampilkan semua objek di beberapa halaman.
// foreach luar menelusuri halaman; foreach dalam menelusuri objek pada setiap halaman.
$paginator = new Oss\Paginator\ListObjectsV2Paginator(client: $client);
$iter = $paginator->iterPage(new Oss\Models\ListObjectsV2Request(bucket: $bucket));

foreach ($iter as $page) {
    foreach ($page->contents ??  [] as $object) {
        // Cetak nama, tipe, dan ukuran setiap objek.
        print("Object: $object->key, $object->type, $object->size\n");
        // Contoh output: Object: example/photo.jpg, Normal, 10240
    }
}

C#

Untuk informasi selengkapnya, lihat Daftar objek (C# SDK V2).

using OSS = AlibabaCloud.OSS.V2;  // Buat alias untuk SDK Alibaba Cloud OSS guna menyederhanakan penggunaan selanjutnya.

var region = "cn-hangzhou";  // Wajib. Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur Region ke cn-hangzhou.
var endpoint = null as string;  // Opsional. Tentukan nama domain yang digunakan untuk mengakses layanan OSS. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
var bucket = "your bucket name";  // Wajib. Nama bucket tujuan.

// Muat konfigurasi default SDK OSS. Konfigurasi secara otomatis membaca informasi kredensial (seperti AccessKey) dari variabel lingkungan.
var cfg = OSS.Configuration.LoadDefault();
// Secara eksplisit atur penggunaan variabel lingkungan untuk memperoleh kredensial guna verifikasi identitas (format: OSS_ACCESS_KEY_ID, OSS_ACCESS_KEY_SECRET).
cfg.CredentialsProvider = new OSS.Credentials.EnvironmentVariableCredentialsProvider();
// Atur wilayah bucket dalam konfigurasi.
cfg.Region = region;   
// Jika endpoint ditentukan, maka akan menggantikan endpoint default.
if(endpoint != null) 
{
    cfg.Endpoint = endpoint;
} 

// Buat instans klien OSS menggunakan informasi konfigurasi.
using var client = new OSS.Client(cfg); 

// Panggil metode ListObjectsV2Paginator untuk memperoleh semua objek dalam bucket tujuan.
var paginator = client.ListObjectsV2Paginator(new OSS.Models.ListObjectsV2Request()
{
    Bucket = bucket
});

// Cetak informasi semua objek dalam bucket.
Console.WriteLine("Objects:");
await foreach (var page in paginator.IterPageAsync())  // Menelusuri setiap halaman hasil secara asinkron.
{
    // Telusuri setiap objek pada halaman saat ini.
    foreach (var content in page.Contents ?? [])
    {
        // Cetak informasi objek: kunci, ukuran (dalam byte), dan waktu modifikasi terakhir.
        Console.WriteLine($"Object:{content.Key}, {content.Size}, {content.LastModified}");
    }
}

Node.js

Untuk informasi selengkapnya, lihat Daftar objek (Node.js).

const OSS = require('ali-oss');

const client = new OSS({
  // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur wilayah ke oss-cn-hangzhou.
  region: 'yourregion',
  // Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  authorizationV4: true,
  // Tentukan nama bucket.
  bucket: 'yourbucketname'
});

async function list () {
  let continuationToken = null;
  // Tampilkan hingga 20 objek per halaman.
  const maxKeys = 20;
  do {
    const result = await client.listV2({
      'continuation-token': continuationToken,
      'max-keys': maxKeys
      });
    continuationToken = result.nextContinuationToken;
        console.log(result);
  }while(continuationToken)
}

list();

Harmony

Untuk informasi selengkapnya, lihat Daftar objek (Harmony SDK).

import Client, { RequestError } from '@aliyun/oss';

// Buat instans klien OSS.
const client = new Client({
  // Ganti dengan ID AccessKey Pengguna RAM Anda.
  accessKeyId: 'yourAccessKeyId',
  // Ganti dengan rahasia AccessKey Pengguna RAM Anda.
  accessKeySecret: 'yourAccessKeySecret',
  // Atur wilayah tempat bucket berada. Misalnya, untuk bucket di wilayah Tiongkok (Hangzhou), atur wilayah ke 'oss-cn-hangzhou'.
  region: 'oss-cn-hangzhou',
});


/**
 * Tampilkan objek dalam bucket per halaman.
 * Gunakan metode listObjectsV2 dengan parameter continuationToken untuk menampilkan objek per halaman.
 */
const listObjectsV2WithContinuationToken = async () => {
  try {
    let continuationToken: string | undefined; // Token pagination. Awalnya kosong.
    let isTruncated = true; // Menunjukkan apakah masih ada objek yang perlu ditampilkan.

    // Lakukan loop dan tampilkan objek hingga tidak ada objek tersisa.
    while (isTruncated) {
      const res = await client.listObjectsV2({
        bucket: 'yourBucketName', // Nama bucket. Ganti dengan nama bucket Anda.
        continuationToken, // Token pagination yang digunakan untuk mengambil halaman hasil berikutnya.
      });

      // Cetak objek pada halaman saat ini dan metadata-nya.
      console.log(JSON.stringify(res));

      // Perbarui status pagination.
      isTruncated = res.data.isTruncated; // Menunjukkan apakah masih ada objek.
      continuationToken = res.data.nextContinuationToken; // Token pagination untuk halaman berikutnya.
    }
  } catch (err) {
    // Tangani pengecualian yang terjadi selama permintaan.
    if (err instanceof RequestError) {
      console.log('code: ', err.code); // Kode kesalahan.
      console.log('message: ', err.message); // Pesan kesalahan.
      console.log('requestId: ', err.requestId); // ID permintaan.
      console.log('status: ', err.status); // Kode status HTTP.
      console.log('ec: ', err.ec); // Kode kesalahan.
    } else {
      console.log('unknown error: ', err);
    }
  }
};

// Panggil fungsi listObjectsV2WithContinuationToken untuk menampilkan objek per halaman.
listObjectsV2WithContinuationToken();

Swift

Untuk informasi selengkapnya, lihat Daftar objek (Swift SDK).

import AlibabaCloudOSS
import Foundation
@main
struct Main {
    static func main() async {
        do {
            // Tentukan wilayah tempat bucket berada. Misalnya, atur wilayah ke cn-hangzhou untuk Tiongkok (Hangzhou).
            let region = "cn-hangzhou"
            // Tentukan nama bucket.
            let bucket = "yourBucketName"
            // Opsional. Tentukan nama domain yang digunakan untuk mengakses OSS. Misalnya, atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com untuk Tiongkok (Hangzhou).
            let endpoint: String? = nil
            
            // Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
            let credentialsProvider = EnvironmentCredentialsProvider()
            // Konfigurasikan parameter klien OSS.
            let config = Configuration.default()
                .withRegion(region)        // Atur wilayah tempat bucket berada.
                .withCredentialsProvider(credentialsProvider)  // Atur kredensial akses.
                
            // Atur endpoint.
            if let endpoint = endpoint {
                config.withEndpoint(endpoint)
            }
            
            // Buat instans klien OSS.
            let client = Client(config)
            // Buat objek permintaan paginator untuk menelusuri semua objek dalam bucket dengan paging.
            let paginator = client.listObjectsV2Paginator(
                ListObjectsV2Request(
                    bucket: bucket // Tentukan nama bucket yang objeknya ingin Anda tampilkan.
                )
            )
            // Telusuri hasil paginasi untuk memperoleh informasi objek per halaman.
            for try await page in paginator {
                // Telusuri daftar objek pada halaman saat ini.
                for content in page.contents ?? [] {
                    // Cetak metadata objek: nama objek, ukuran dalam byte, dan waktu modifikasi terakhir.
                    print("Object key:\(content.key ?? ""), size: \(String(describing: content.size)), last modified: \(String(describing: content.lastModified))")
                }
            }
        } catch {
            // Cetak kesalahan.
            print("error: \(error)")
        }
    }
}

Ruby

Untuk informasi selengkapnya, lihat Daftar objek (Ruby SDK).

require 'aliyun/oss'

client = Aliyun::OSS::Client.new(
  # Atur endpoint ke yang sesuai dengan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
  endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
  # Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
  access_key_id: ENV['OSS_ACCESS_KEY_ID'],
  access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)

# Tentukan nama bucket. Contoh: examplebucket.
bucket = client.get_bucket('examplebucket')
# Tampilkan semua objek.
objects = bucket.list_objects
objects.each { |o| puts o.key }     

Browser.js

Untuk informasi selengkapnya, lihat Daftar objek (Browser.js SDK).

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <script src="https://gosspublic.alicdn.com/aliyun-oss-sdk-6.18.0.min.js"></script>
  </head>
  <body>
    <script>      
      const client = new OSS({
        // Atur yourRegion ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur yourRegion ke oss-cn-hangzhou.
        region: "yourRegion",
        authorizationV4: true,
        // Pasangan AccessKey sementara (ID AccessKey dan rahasia AccessKey) yang diperoleh dari Layanan Token Keamanan (STS).
        accessKeyId: 'yourAccessKeyId',
        accessKeySecret: 'yourAccessKeySecret',
        // Token keamanan (SecurityToken) yang diperoleh dari STS.
        stsToken: 'yourSecurityToken',
        // Tentukan nama bucket. Misalnya, examplebucket.
        bucket: "examplebucket",
      });

      async function list(dir) {
        try {
          // Secara default, maksimal 1.000 file dikembalikan.
          let result = await client.list();
          console.log(result);

          // Lanjutkan memperoleh daftar file mulai dari file setelah file terakhir yang dibaca dalam operasi daftar sebelumnya.
          if (result.isTruncated) {
            result = await client.list({ marker: result.nextMarker });
          }

          // Tampilkan file yang memiliki awalan 'ex'.
          result = await client.list({
            prefix: "ex",
          });
          console.log(result);

          // Tampilkan file yang memiliki awalan 'ex' dan namanya berada setelah 'example' dalam urutan alfabet.
          result = await client.list({
            prefix: "ex",
            marker: "example",
          });
          console.log(result);
        } catch (e) {
          console.log(e);
        }
      }

      list();
    </script>
  </body>
</html>
          

Android

Untuk informasi selengkapnya, lihat Daftar objek (Android SDK).

private String marker = null;
private boolean isCompleted = false;

// Tampilkan semua objek per halaman.
public void getAllObject() {
    do {
        OSSAsyncTask task = getObjectList();
        // Blokir thread untuk memperoleh NextMarker. Untuk mengambil halaman berikutnya, atur marker ke nilai NextMarker dari respons sebelumnya. Tidak diperlukan marker untuk halaman pertama.
        // Contoh ini memblokir thread dalam loop untuk memperoleh NextMarker guna pagination. Di lingkungan produksi, tentukan apakah perlu memblokir thread berdasarkan kebutuhan aplikasi Anda.
        task.waitUntilFinished();
    } while (!isCompleted);
}

// Tampilkan satu halaman objek.
public OSSAsyncTask getObjectList() {
    // Tentukan nama bucket.
    ListObjectsRequest request = new ListObjectsRequest("examplebucket");
    // Tentukan jumlah maksimum objek yang dikembalikan per halaman. Jika parameter ini tidak diatur, nilai default adalah 100. Nilai maxKeys tidak boleh lebih dari 1.000.
    request.setMaxKeys(20);
    request.setMarker(marker);

    OSSAsyncTask task = oss.asyncListObjects(request, new OSSCompletedCallback<ListObjectsRequest, ListObjectsResult>() {
        @Override
        public void onSuccess(ListObjectsRequest request, ListObjectsResult result) {
            for (OSSObjectSummary objectSummary : result.getObjectSummaries()) {
                Log.i("ListObjects", objectSummary.getKey());
            }
            // Halaman hasil terakhir.
            if (!result.isTruncated()) {
                isCompleted = true;
                return;
            }
            // Marker untuk halaman hasil berikutnya.
            marker = result.getNextMarker();
        }

        @Override
        public void onFailure(ListObjectsRequest request, ClientException clientException, ServiceException serviceException) {
            isCompleted = true;
            // Tangani pengecualian permintaan.
            if (clientException != null) {
                // Tangani pengecualian sisi klien, seperti kesalahan jaringan.
                clientException.printStackTrace();
            }
            if (serviceException != null) {
                // Tangani pengecualian sisi server.
                Log.e("ErrorCode", serviceException.getErrorCode());
                Log.e("RequestId", serviceException.getRequestId());
                Log.e("HostId", serviceException.getHostId());
                Log.e("RawMessage", serviceException.getRawMessage());
            }
        }
    });
    return task;
}

C++

Untuk informasi selengkapnya, lihat Daftar objek (C++ SDK).

#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;

int main(void)
{
    /* Inisialisasi informasi akun OSS. */
            
    /* Atur yourEndpoint ke Endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. */
    std::string Endpoint = "yourEndpoint";
    /* Atur yourRegion ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur wilayah ke cn-hangzhou. */
    std::string Region = "yourRegion";
    /* Tentukan nama bucket. Contoh: examplebucket. */
    std::string BucketName = "examplebucket";

    /* Inisialisasi sumber daya jaringan. */
    InitializeSdk();

    ClientConfiguration conf;
    conf.signatureVersion = SignatureVersionType::V4;
    /* Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. */
    auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    OssClient client(Endpoint, credentialsProvider, conf);
    client.SetRegion(Region);

    std::string nextMarker = "";
    bool isTruncated = false; 
    do {
        /* Tampilkan objek. */
        ListObjectsRequest request(BucketName);
        request.setMarker(nextMarker);
        auto outcome = client.ListObjects(request);

        if (!outcome.isSuccess()) {    
            /* Tangani pengecualian. */
            std::cout << "ListObjects gagal" <<
            ",kode:" << outcome.error().Code() <<
            ",pesan:" << outcome.error().Message() <<
            ",requestId:" << outcome.error().RequestId() << std::endl;
            ShutdownSdk();
            return -1;  
        }
        else {
            for (const auto& object : outcome.result().ObjectSummarys()) {
                std::cout << "objek"<<
                ",nama:" << object.Key() <<
                ",ukuran:" << object.Size() <<
                ",waktu modifikasi terakhir:" << object.LastModified() << std::endl;
            }      
        }
        nextMarker = outcome.result().NextMarker();
        isTruncated = outcome.result().IsTruncated();
    } while (isTruncated);

    /* Lepaskan sumber daya jaringan. */
    ShutdownSdk();
    return 0;
}

iOS

Untuk informasi selengkapnya, lihat Daftar objek (iOS SDK).

 do {
    OSSGetBucketRequest *getBucket = [OSSGetBucketRequest new];
    getBucket.bucketName = @"examplebucket";
    getBucket.marker = _marker;  // Mengakses variabel instans _marker
    getBucket.maxKeys = 20;

    OSSTask *getBucketTask = [client getBucket:getBucket];
    [getBucketTask continueWithBlock:^id(OSSTask *task) {
        if (!task.error) {
            OSSGetBucketResult *result = task.result;
            NSLog(@"Get bucket berhasil!");
            NSLog(@"objek: %@", result.contents);
            if (result.isTruncated) {
                _marker = result.nextMarker;  // Perbarui variabel instans _marker
                _isCompleted = NO;
            } else {
                _isCompleted = YES;
            }
        } else {
            _isCompleted = YES;
            NSLog(@"Get bucket gagal, error: %@", task.error);
        }
        return nil;
    }];
    // Implementasikan pemblokiran sinkron untuk menunggu tugas selesai.
    [getBucketTask waitUntilFinished];
} while (!_isCompleted);

C

Untuk informasi selengkapnya, lihat Daftar objek (C SDK).

#include "oss_api.h"
#include "aos_http_io.h"
/* Ganti yourEndpoint dengan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com. */
const char *endpoint = "yourEndpoint";
/* Ganti dengan nama bucket Anda, misalnya, examplebucket. */
const char *bucket_name = "examplebucket";
/* Ganti yourRegion dengan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur wilayah ke cn-hangzhou. */
const char *region = "yourRegion";
void init_options(oss_request_options_t *options)
{
    options->config = oss_config_create(options->pool);
    /* Inisialisasi tipe aos_string_t dengan string char*. */
    aos_str_set(&options->config->endpoint, endpoint);
    /* Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur. */
    aos_str_set(&options->config->access_key_id, getenv("OSS_ACCESS_KEY_ID"));
    aos_str_set(&options->config->access_key_secret, getenv("OSS_ACCESS_KEY_SECRET"));
    // Konfigurasikan dua parameter tambahan berikut.
    aos_str_set(&options->config->region, region);
    options->config->signature_version = 4;
    /* Menentukan apakah CNAME digunakan. Nilai 0 menunjukkan bahwa CNAME tidak digunakan. */
    options->config->is_cname = 0;
    /* Atur parameter jaringan, seperti periode timeout. */
    options->ctl = aos_http_controller_create(options->pool, 0);
}
int main(int argc, char *argv[])
{
    /* Panggil metode aos_http_io_initialize di entri program untuk menginisialisasi sumber daya global seperti jaringan dan memori. */
    if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
        exit(1);
    }
    /* Pool memori untuk manajemen memori, yang setara dengan apr_pool_t. Kode implementasi berada di pustaka apr. */
    aos_pool_t *pool;
    /* Buat pool memori baru. Parameter kedua adalah NULL, yang menunjukkan bahwa pool memori baru tidak mewarisi dari pool memori lain. */
    aos_pool_create(&pool, NULL);
    /* Buat dan inisialisasi opsi. Parameter ini berisi konfigurasi global, seperti endpoint, access_key_id, access_key_secret, is_cname, dan curl. */
    oss_request_options_t *oss_client_options;
    /* Alokasikan memori untuk opsi dalam pool memori. */
    oss_client_options = oss_request_options_create(pool);
    /* Inisialisasi opsi klien oss_client_options. */
    init_options(oss_client_options);
    /* Inisialisasi parameter. */
    aos_string_t bucket;
    aos_status_t *resp_status = NULL; 
    oss_list_object_params_t *params = NULL;
    oss_list_object_content_t *content = NULL;
    int size = 0;
    char *line = NULL;
    char *prefix = "";
    char *nextMarker = "";
    aos_str_set(&bucket, bucket_name);
    params = oss_create_list_object_params(pool);
    /* Gunakan parameter max_ret untuk mengatur jumlah objek yang dikembalikan. */
    /* Secara default, maksimal 1.000 objek dapat ditampilkan. Jika jumlah objek yang akan ditampilkan melebihi 1.000, hanya 1.000 objek pertama dalam urutan alfabet yang dikembalikan. Nilai truncated dalam respons adalah true, dan nilai next_marker dikembalikan sebagai titik awal untuk operasi baca berikutnya. */
    params->max_ret = 100;
    aos_str_set(&params->prefix, prefix);
    aos_str_set(&params->marker, nextMarker);
    printf("Object\tSize\tLastModified\n");
    /* Tampilkan semua objek. */
    do {
        resp_status = oss_list_object(oss_client_options, &bucket, params, NULL);
        if (!aos_status_is_ok(resp_status))
        {
            printf("tampilkan objek gagal\n");
            break;
        }
        aos_list_for_each_entry(oss_list_object_content_t, content, &params->object_list, node) {
            ++size;
            line = apr_psprintf(pool, "%.*s\t%.*s\t%.*s\n", content->key.len, content->key.data, 
                content->size.len, content->size.data, 
                content->last_modified.len, content->last_modified.data);
            printf("%s", line);
        }
        nextMarker = apr_psprintf(pool, "%.*s", params->next_marker.len, params->next_marker.data);
        aos_str_set(&params->marker, nextMarker);
        aos_list_init(&params->object_list);
        aos_list_init(&params->common_prefix_list);
    } while (params->truncated == AOS_TRUE);
    printf("Total %d\n", size);
    /* Lepaskan pool memori. Ini melepaskan memori yang dialokasikan untuk berbagai sumber daya selama permintaan. */
    aos_pool_destroy(pool);
    /* Lepaskan sumber daya global yang sebelumnya dialokasikan. */
    aos_http_io_deinitialize();
    return 0;
}

ossutil

Contoh berikut menunjukkan cara menampilkan semua informasi Object dalam bucket examplebucket.

ossutil api list-objects-v2 --bucket examplebucket

Untuk informasi selengkapnya, lihat list-objects-v2 (get-bucket-v2).

Konsol OSS

  1. Masuk ke Konsol OSS.

  2. Di panel navigasi sebelah kiri, klik Buckets.

  3. Klik nama bucket target. Pada halaman detail bucket, klik Object Management > Objects.

    Halaman ini menampilkan semua objek dalam bucket, secara default menampilkan 50 objek per halaman. Anda dapat meningkatkan jumlah objek yang ditampilkan per halaman hingga maksimal 500.

Tampilkan semua objek dalam direktori

Untuk memperoleh daftar datar semua objek dalam direktori dan subdirektori-nya, atur parameter prefix.

Parameter prefix menyaring berdasarkan awalan, mengembalikan semua objek yang namanya (Key) diawali dengan string yang ditentukan. Karena OSS menggunakan struktur penyimpanan datar tanpa direktori fisik, filter ini sudah cukup untuk mengambil semua objek dalam direktori logis.

Gunakan SDK

Java

Untuk kode contoh lengkap, lihat Daftar objek (Java SDK V1).

// ...
// Atur awalan.
ListObjectsV2Request listObjectsV2Request = new ListObjectsV2Request(bucketName);
listObjectsV2Request.setPrefix("images/");  // Tentukan awalan.
ListObjectsV2Result result = ossClient.listObjectsV2(listObjectsV2Request);
// ...

Python

Untuk kode contoh lengkap, lihat Daftar objek (Python SDK V2).

# ...
# Tambahkan parameter awalan.
for page in paginator.iter_page(oss.ListObjectsV2Request(
    bucket='your-bucket',
    prefix='images/'  # Tentukan awalan.
)):
# ...

Go

Untuk kode contoh lengkap, lihat Daftar objek (Go SDK V2).

// ...
// Atur awalan.
request := &oss.ListObjectsV2Request{
Bucket: oss.Ptr(bucketName),
Prefix: oss.Ptr("images/"), // Tampilkan semua objek dengan awalan yang ditentukan.
}
// ...

Node.js

Untuk kode contoh lengkap, lihat Daftar objek (Node.js).

// ...
// Atur awalan.
const result = await client.listV2({
    prefix: 'images/'  // Tentukan awalan.
});
// ...

Harmony

Untuk kode contoh lengkap, lihat Daftar objek (Harmony SDK).

// ...
// Atur awalan.
const res = await client.listObjectsV2({
    bucket: 'yourBucketName',
    prefix: 'images/',  // Tentukan awalan.
});
// ...

Ruby

Untuk kode contoh lengkap, lihat Daftar objek (Ruby SDK).

# ...
# Atur awalan.
objects = bucket.list_objects(:prefix => 'images/')  # Tentukan awalan.
# ...

Android

Untuk kode contoh lengkap, lihat Daftar objek (Android SDK).

// ...
// Atur awalan.
ListObjectsRequest request = new ListObjectsRequest("examplebucket");
request.setPrefix("images/");  // Tentukan awalan.
// ...

C++

Untuk kode contoh lengkap, lihat Daftar objek (C++ SDK).

// ...
// Atur awalan.
ListObjectsRequest request(BucketName);
request.setPrefix("images/");  // Tentukan awalan.
// ...

iOS

Untuk kode contoh lengkap, lihat Daftar objek (iOS SDK).

// ...
// Atur awalan.
getBucket.prefix = @"images/";  // Tentukan awalan.
// ...

C

Untuk kode contoh lengkap, lihat Daftar objek (C SDK).

// ...
// Atur awalan.
char *prefix = "images/";  // Tentukan awalan.
aos_str_set(&params->prefix, prefix);
// ...

Gunakan ossutil

Contoh berikut menunjukkan cara menampilkan semua Object dalam bucket examplebucket yang memiliki awalan dir yang ditentukan.

ossutil api list-objects-v2 --bucket examplebucket --prefix dir/

Untuk detail penggunaan lebih lanjut, lihat list-objects-v2 (get-bucket-v2).

Contoh output

Asumsikan bucket berisi objek berikut:

images/cat.jpg
images/dog.png
images/archive/old.zip
readme.txt

Saat Anda mengatur prefix="images/" dalam permintaan Anda, permintaan tersebut mengembalikan respons berikut:

images/
images/archive/
images/archive/old.zip
images/cat.jpg
images/dog.png

Tampilkan objek langsung dan subdirektori

Selain parameter prefix, tambahkan parameter delimiter (biasanya diatur ke /). Ini membagi hasil menjadi dua kelompok: objects dan commonPrefixes (subdirektori).

Parameter delimiter digunakan untuk mengelompokkan berdasarkan hierarki. Saat diatur, OSS melakukan pengelompokan sekunder pada hasil yang telah difilter berdasarkan prefix:

  • Jika kunci objek tidak mengandung delimiter / setelah prefix, objek tersebut merupakan objek.

  • Jika nama file mengandung / setelah prefix, segmen hingga / pertama dianggap sebagai subdirektori.

Gunakan SDK

Java

Untuk kode contoh lengkap, lihat Daftar objek (Java SDK V1).

// ...
// Atur delimiter.
ListObjectsV2Request listObjectsV2Request = new ListObjectsV2Request(bucketName);
listObjectsV2Request.setPrefix("images/");  // Tentukan direktori.
listObjectsV2Request.setDelimiter("/");     // Atur delimiter.
ListObjectsV2Result result = ossClient.listObjectsV2(listObjectsV2Request);
// Iterasi melalui objek dalam direktori saat ini.
for (OSSObjectSummary objectSummary : result.getObjectSummaries()) {
    System.out.println("Object: " + objectSummary.getKey());
}
// Iterasi melalui subdirektori.
for (String commonPrefix : result.getCommonPrefixes()) {
    System.out.println("Subdirectory: " + commonPrefix);
}
// ...

Python

Untuk kode contoh lengkap, lihat Daftar objek (Python SDK V2).

# ...
# Tambahkan parameter delimiter.
for page in paginator.iter_page(oss.ListObjectsV2Request(
    bucket=args.bucket,
    prefix="images/",  // Tentukan direktori.
    delimiter="/",     // Atur delimiter.
)):
    # Iterasi melalui objek dalam direktori saat ini.
    for file in page.contents:
        print(f'Object: {file.key}')
    # Iterasi melalui subdirektori.
    for prefix in page.common_prefixes:
        print(f'Subdirectory: {prefix.prefix}')
# ...

Go

// ...
// Atur delimiter.
request := &oss.ListObjectsV2Request{
    Bucket:    oss.Ptr(bucketName),
    Prefix:    oss.Ptr("images/"),  // Tentukan direktori.
    Delimiter: oss.Ptr("/"),        // Atur delimiter.
}
// Iterasi melalui objek dalam direktori saat ini.
for _, obj := range lsRes.Contents {
    log.Printf("Object: %v\n", oss.ToString(obj.Key))
}
// Iterasi melalui subdirektori.
for _, prefix := range lsRes.CommonPrefixes {
    log.Printf("Subdirectory: %v\n", *prefix.Prefix)
}
// ...

PHP

Untuk kode contoh lengkap, lihat Daftar objek (PHP SDK V2).

// ...
// Buat paginator dan atur delimiter untuk membedakan antara objek dan subdirektori.
$paginator = new Oss\Paginator\ListObjectsV2Paginator(client: $client);
$iter = $paginator->iterPage(new Oss\Models\ListObjectsV2Request(
    bucket: $bucket,
    prefix: "",
    delimiter: "/"
));
// Iterasi melalui hasil paginasi.
foreach ($iter as $page) {
    // Iterasi melalui contents untuk memperoleh objek dalam direktori saat ini.
    foreach ($page->contents ?? [] as $object) {
        echo "Object: " . $object->key . PHP_EOL;
    }
    // Iterasi melalui commonPrefixes untuk memperoleh subdirektori.
    foreach ($page->commonPrefixes ?? [] as $prefixObject) {
        echo "Subdirectory: " . $prefixObject->prefix . PHP_EOL;
    }
}
// ...

Node.js

Untuk kode contoh lengkap, lihat Daftar objek (Node.js).

// ...
// Atur delimiter.
const result = await client.listV2({
prefix: dir, // Tentukan direktori.
delimiter: '/' // Atur delimiter.
});
// Iterasi melalui objek dalam direktori saat ini.
if (result && result.objects) {
result.objects.forEach(obj => {
console.log('Object: %s', obj.name);
});
}
// Iterasi melalui subdirektori.
if (result && result.prefixes) {
result.prefixes.forEach(subDir => {
console.log('Subdirectory: %s', subDir);
});
}
// ...

Harmony

Untuk kode contoh lengkap, lihat Daftar objek (Harmony SDK).

// ...
// Atur delimiter.
const res = await client.listObjectsV2({
bucket: 'yourBucketName', // Nama bucket.
prefix: 'images/', // Tentukan direktori.
delimiter: '/', // Atur delimiter.
});
// Iterasi melalui objek dalam direktori saat ini.
if (res && res.objects) {
res.objects.forEach(obj => {
console.log('Object:', obj.name);
});
}
// Iterasi melalui subdirektori.
if (res && res.prefixes) {
res.prefixes.forEach(subDir => {
console.log('Subdirectory:', subDir);
});
}
// ...

Browser.js

Untuk kode contoh lengkap, lihat Daftar objek (Browser.js SDK).

// ...
// Atur delimiter.
let result = await client.list({
prefix: 'images/', // Tentukan direktori.
delimiter: "/", // Atur delimiter.
});
// Iterasi melalui objek dalam direktori saat ini.
result.objects.forEach(function (obj) {
console.log("Object: %s", obj.name);
});
// Iterasi melalui subdirektori.
result.prefixes.forEach(function (subDir) {
console.log("Subdirectory: %s", subDir);
});
// ...

Ruby

Untuk kode contoh lengkap, lihat Daftar objek (Ruby SDK).

// ...
// Atur delimiter.
objects = bucket.list_objects(prefix: 'images/', delimiter: '/')
// Iterasi melalui objek dalam direktori saat ini.
if obj.is_a?(Aliyun::OSS::Object)
puts "Object: #{obj.key}"
end
// Iterasi melalui subdirektori.
if obj.is_a?(String) # Common Prefix
puts "Subdirectory: #{obj}"
end
// ...

C++

Untuk kode contoh lengkap, lihat Daftar objek (C++ SDK).

// ...
// Atur delimiter.
ListObjectsRequest request(BucketName);
request.setPrefix("images/"); // Tentukan direktori.
request.setDelimiter("/"); // Atur delimiter.
// Iterasi melalui objek dalam direktori saat ini.
for (const auto& object : outcome.result().ObjectSummarys()) {
std::cout << "Object:" << object.Key() << std::endl;
}
// Iterasi melalui subdirektori.
for (const auto& commonPrefix : outcome.result().CommonPrefixes()) {
std::cout << "Subdirectory:" << commonPrefix << std::endl;
}
// ...

C

Untuk kode contoh lengkap, lihat Daftar objek (C SDK).

// ...
// Atur delimiter.
params = oss_create_list_object_params(pool);
aos_str_set(&params->prefix, "images/"); // Tentukan direktori.
aos_str_set(&params->delimiter, "/"); // Atur delimiter.
// Iterasi melalui objek dalam direktori saat ini.
aos_list_for_each_entry(oss_list_object_content_t, content, &params->object_list, node) {
printf("Object: %.*s\n", content->key.len, content->key.data);
}
// Iterasi melalui subdirektori.
aos_list_for_each_entry(oss_list_object_common_prefix_t, commonPrefix, &params->common_prefix_list, node) {
printf("Subdirectory: %.*s\n", commonPrefix->prefix.len, commonPrefix->prefix.data);
}
// ...

Gunakan ossutil

Contoh berikut menunjukkan cara menampilkan Object dalam direktori saat ini dari bucket examplebucket.

ossutil api list-objects-v2 --bucket examplebucket --prefix images/ --delimiter /

Untuk detail penggunaan lebih lanjut, lihat list-objects-v2 (get-bucket-v2).

Contoh output

Mengatur prefix="images/" dan delimiter="/" dalam permintaan Anda mengelompokkan hasil sebagai berikut:

Objects:
images/
images/cat.jpg
images/dog.png
Subdirectories:
images/archive/

Tampilkan objek setelah posisi tertentu

Gunakan parameter startAfter (atau marker pada beberapa SDK lama) untuk melewati objek yang secara leksikografis mendahului kunci tertentu.

Gunakan SDK

Java

Untuk kode contoh lengkap, lihat Daftar objek (Java SDK V1).

// ...
// Kode utama: Atur posisi awal.
ListObjectsV2Request listObjectsV2Request = new ListObjectsV2Request(bucketName);
listObjectsV2Request.setStartAfter("images/cat.jpg");  // Mulai menampilkan setelah objek yang ditentukan.
ListObjectsV2Result result = ossClient.listObjectsV2(listObjectsV2Request);
// ...

Python

Untuk kode contoh lengkap, lihat Daftar objek (Python SDK V2).

# ...
# Kode utama: Tambahkan parameter start_after.
for page in paginator.iter_page(oss.ListObjectsV2Request(
    bucket=args.bucket,
    start_after="images/cat.jpg",  // Mulai menampilkan setelah objek yang ditentukan.
)):
# ...

Go

Untuk kode contoh lengkap, lihat Daftar objek (Go SDK V2).

// ...
// Kode utama: Atur posisi awal.
request := &oss.ListObjectsV2Request{
    Bucket:     oss.Ptr(bucketName),
    StartAfter: oss.Ptr("images/cat.jpg"),  // Mulai menampilkan setelah objek yang ditentukan.
}
// ...

PHP

Untuk kode contoh lengkap, lihat Daftar objek (PHP SDK V2).

// ...
// Kode utama: Atur posisi awal.
$paginator = new Oss\Paginator\ListObjectsV2Paginator(client: $client);
$iter = $paginator->iterPage(new Oss\Models\ListObjectsV2Request(
bucket: $bucket,
startAfter:"images/cat.jpg", // Mulai menampilkan setelah objek yang ditentukan.
));
// ...

Ruby

Untuk kode contoh lengkap, lihat Daftar objek (Ruby SDK).

# ...
# Kode penting: Mengatur marker (posisi awal).
objects = bucket.list_objects(:marker => 'images/cat.jpg')  # Memulai daftar setelah objek yang ditentukan.
# ...

Android

Untuk kode contoh lengkap, lihat Daftar objek (Android SDK).

// ...
// Kode utama: Atur marker (posisi awal).
ListObjectsRequest request = new ListObjectsRequest("examplebucket");
request.setMarker("images/cat.jpg");  // Mulai menampilkan setelah objek yang ditentukan.
// ...

C++

Untuk kode contoh lengkap, lihat Daftar objek (C++ SDK).

// ...
// Kode utama: Atur marker (posisi awal).
ListObjectsRequest request(BucketName);
request.setMarker("images/cat.jpg");  // Mulai menampilkan setelah objek yang ditentukan.
// ...

iOS

Untuk kode contoh lengkap, lihat Daftar objek (iOS SDK).

// ...
// Kode utama: Atur marker (posisi awal).
getBucket.marker = @"images/cat.jpg";  // Mulai menampilkan setelah objek yang ditentukan.
// ...

C

Untuk kode contoh lengkap, lihat Daftar objek (C SDK).

// ...
// Kode utama: Atur marker (posisi awal).
char *nextMarker = "images/cat.jpg";  // Mulai menampilkan setelah objek yang ditentukan.
aos_str_set(&params->marker, nextMarker);
// ...

Gunakan ossutil

Contoh berikut menampilkan objek yang muncul setelah test.txt dalam bucket examplebucket.

ossutil api list-objects-v2 --bucket examplebucket --start-after test.txt

Untuk informasi selengkapnya, lihat list-objects-v2 (get-bucket-v2).

Contoh output:

Asumsikan bucket berisi:

images/cat.jpg
images/dog.png
images/archive/old.zip
readme.txt

Mengatur start_after="images/cat.jpg" dalam permintaan mengecualikan "images/cat.jpg" dan objek apa pun yang secara leksikografis mendahuluinya:

images/dog.png
readme.txt

Atur jumlah objek per halaman

Parameter max-keys menentukan jumlah objek yang dikembalikan dalam satu permintaan. Nilai default adalah 100, dan maksimum adalah 1.000.

SDK

Java

Untuk kode contoh lengkap, lihat Daftar objek (Java SDK V1).

// ...
// Kode utama: Tambahkan parameter maxKeys untuk mengatur jumlah objek per halaman.
ListObjectsV2Request listObjectsV2Request = new ListObjectsV2Request(bucketName);
listObjectsV2Request.setMaxKeys(1000);  // Hingga 1.000 objek per halaman.
ListObjectsV2Result result = ossClient.listObjectsV2(listObjectsV2Request);
// ...

Python

Untuk kode contoh lengkap, lihat Daftar objek (Python SDK V2).

# ...
# Kode utama: Tambahkan parameter max_keys untuk mengatur jumlah objek per halaman.
for page in paginator.iter_page(oss.ListObjectsV2Request(
    bucket=args.bucket,
    max_keys=1000,  // Hingga 1.000 objek per halaman.
)):
# ...

Go

Untuk kode contoh lengkap, lihat Daftar objek (Go SDK V2).

// ...
// Kode utama: Tambahkan parameter MaxKeys untuk mengatur jumlah objek per halaman.
request := &oss.ListObjectsV2Request{
    Bucket:  oss.Ptr(bucketName),
    MaxKeys: 1000,  // Hingga 1.000 objek per halaman.
}
// ...

PHP

Untuk kode contoh lengkap, lihat Daftar objek (PHP SDK V2).

// ...
// Kode utama: Buat paginator dan gunakan parameter maxKeys untuk mengatur jumlah maksimum objek yang dikembalikan per halaman.
$paginator = new Oss\Paginator\ListObjectsV2Paginator(client: $client);
$iter = $paginator->iterPage(new Oss\Models\ListObjectsV2Request(
                bucket: $bucket,
                maxKeys: 1000, // Hingga 1.000 objek per halaman.
            ));
// ...

Node.js

Untuk kode contoh lengkap, lihat Daftar objek (Node.js).

// ...
// Kode utama: Tambahkan parameter "max-keys" untuk mengatur jumlah objek per halaman.
const result = await client.listV2({
    "max-keys": 1000  // Hingga 1.000 objek per halaman.
});
// ...

Android

Untuk kode contoh lengkap, lihat Daftar objek (Android SDK).

// ...
// Kode utama: Tambahkan parameter maxKeys untuk mengatur jumlah objek per halaman.
ListObjectsRequest request = new ListObjectsRequest("examplebucket");
request.setMaxKeys(1000);  // Hingga 1.000 objek per halaman.
// ...

C++

Untuk kode contoh lengkap, lihat Daftar objek (C++ SDK).

// ...
// Kode utama: Tambahkan parameter maxKeys untuk mengatur jumlah objek per halaman.
ListObjectsRequest request(BucketName);
request.setMaxKeys(1000);  // Hingga 1.000 objek per halaman.
// ...

iOS

Untuk kode contoh lengkap, lihat Daftar objek (iOS SDK).

// ...
// Kode utama: Tambahkan parameter maxKeys untuk mengatur jumlah objek per halaman.
getBucket.maxKeys = 1000;  // Hingga 1.000 objek per halaman.
// ...

C

Untuk kode contoh lengkap, lihat Daftar objek (C SDK).

// ...
// Kode utama: Tambahkan parameter max_ret untuk mengatur jumlah objek per halaman.
params->max_ret = 1000;  // Hingga 1.000 objek per halaman.
// ...

ossutil

Perintah berikut menampilkan 100 objek pertama dengan awalan dir/ dalam bucket examplebucket.

ossutil api list-objects-v2 --bucket examplebucket --prefix dir/ --max-keys 100

Untuk informasi selengkapnya, lihat list-objects-v2 (get-bucket-v2).

Contoh output:

Asumsikan bucket berisi objek berikut:

image/
image/archive/
image/archive/old.zip
image/cat.jpg
image/dog.jpg
readme.txt
  • Jika max-keys diatur ke 2, objek dikembalikan dua per halaman.

    Object: image/, Size: 0, Last_modified: 2025-09-22 07:09:49+00:00
    Object: image/archive/, Size: 0, Last_modified: 2025-09-22 07:11:32+00:00
    ===================================
    Object: image/archive/old.zip, Size: 10199189, Last_modified: 2025-09-22 07:12:06+00:00
    Object: image/cat.jpg, Size: 743970, Last_modified: 2025-09-22 07:10:15+00:00
    ===================================
    Object: image/dog.jpg, Size: 743970, Last_modified: 2025-09-22 07:10:30+00:00
    Object: readme.txt, Size: 17, Last_modified: 2025-09-22 07:12:38+00:00
    ===================================
  • Jika max-keys diatur ke 100, semua objek dikembalikan dalam satu halaman.

    Object: image/, Size: 0, Last_modified: 2025-09-22 07:09:49+00:00
    Object: image/archive/, Size: 0, Last_modified: 2025-09-22 07:11:32+00:00
    Object: image/archive/old.zip, Size: 10199189, Last_modified: 2025-09-22 07:12:06+00:00
    Object: image/cat.jpg, Size: 743970, Last_modified: 2025-09-22 07:10:15+00:00
    Object: image/dog.jpg, Size: 743970, Last_modified: 2025-09-22 07:10:30+00:00
    Object: readme.txt, Size: 17, Last_modified: 2025-09-22 07:12:38+00:00

Pertimbangan produksi

Optimasi kinerja

  • Tingkatkan ukuran halaman: Mengatur max-keys ke 1.000 secara signifikan mengurangi panggilan API pada jaringan cepat, tetapi perhatikan penggunaan memori agar tidak memuat data berlebihan.

  • Proses awalan secara paralel: Penampilan berurutan lambat untuk bucket dengan ratusan ribu objek atau lebih. Tingkatkan kinerja dengan memproses awalan berbeda (direktori logis) secara paralel, seperti images/, documents/, dan logs/.

  • Cache struktur direktori: Untuk struktur direktori yang jarang berubah, cache hasil penampilan untuk mengurangi panggilan API berulang.

Kontrol biaya

  • Hindari pemindaian penuh yang sering: Menampilkan semua objek secara berkala dalam bucket besar dapat mahal. Pertimbangkan alternatif yang lebih hemat biaya berikut:

    • Untuk analisis skala besar secara berkala, gunakan fitur Inventory yang lebih murah untuk menghasilkan manifes objek lengkap.

    • Untuk merespons unggahan atau penghapusan objek secara real-time, gunakan notifikasi event, yang lebih efisien dan hemat biaya dibandingkan menampilkan objek.

  • Konfigurasikan pagination secara wajar: Ukuran halaman kecil meningkatkan panggilan API, sedangkan ukuran besar dapat meningkatkan waktu pemrosesan permintaan tunggal dan penggunaan memori.

Kuota dan batasan

  • Jumlah maksimum item per respons: Permintaan ListObjects dan ListObjectsV2 mengembalikan maksimal 1.000 objek.

  • Metode pengurutan: Secara leksikografis berdasarkan kunci objek saja.

FAQ

Tampilkan objek berdasarkan nomor halaman

No.

Tampilkan semua objek dalam direktori tertentu

Gunakan perintah list-objects-v2 (get-bucket-v2) di ossutil untuk menampilkan semua objek dalam direktori tertentu, termasuk struktur direktori dan nama objek.

Urutkan objek berdasarkan waktu modifikasi terakhir

Tidak. Untuk mengurutkan objek berdasarkan waktu modifikasi terakhir, gunakan pengindeksan data.