Objek dalam bucket diurutkan secara default berdasarkan urutan leksikografis. Anda dapat mendaftarkan semua objek, mendaftarkan objek berdasarkan direktori, atau menyesuaikan jumlah objek yang dikembalikan per halaman.
Daftar semua objek
Gunakan OSS SDK
Java
Untuk instruksi lebih lanjut, lihat Daftar objek (Java SDK).
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 dari wilayah China (Hangzhou) digunakan. Tentukan endpoint sebenarnya Anda.
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Dapatkan 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 didaftarkan pada satu waktu.
int maxKeys = 200;
// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou.
String region = "cn-hangzhou";
// Buat instance OSSClient.
// Panggil metode shutdown untuk melepaskan sumber daya saat 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;
// Daftarkan objek per halaman menggunakan parameter nextContinuationToken yang termasuk 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("Tangkap OSSException, yang berarti permintaan Anda sampai ke OSS, "
+ "tetapi ditolak dengan respons kesalahan karena alasan tertentu.");
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("Tangkap ClientException, yang berarti klien 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 instruksi lebih lanjut, 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 diperlukan.
parser.add_argument('--region', help='Wilayah tempat bucket berada.', required=True)
# Tentukan parameter --bucket, yang menentukan nama bucket. Parameter baris perintah ini diperlukan.
parser.add_argument('--bucket', help='Nama bucket.', required=True)
# Tentukan parameter --endpoint, yang menentukan domain yang dapat digunakan layanan lain untuk mengakses OSS. Parameter baris perintah ini opsional.
parser.add_argument('--endpoint', help='Domain yang dapat digunakan layanan lain untuk mengakses OSS')
def main():
args = parser.parse_args() # Parse parameter baris perintah.
# Dapatkan kredensial akses dari variabel lingkungan untuk otentikasi.
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 ke yang ditentukan di baris perintah.
cfg.region = args.region
# Jika parameter endpoint disediakan, tentukan endpoint.
if args.endpoint is not None:
cfg.endpoint = args.endpoint
# Gunakan konfigurasi untuk membuat instance OSSClient.
client = oss.Client(cfg)
# Buat paginator untuk memungkinkan operasi ListObjectsV2 mendaftarkan objek.
paginator = client.list_objects_v2_paginator()
# Telusuri setiap halaman objek yang didaftarkan.
for page in paginator.iter_page(oss.ListObjectsV2Request(
bucket=args.bucket
)
):
# Telusuri setiap objek di setiap halaman.
for o in page.contents:
# Tampilkan nama, ukuran, dan waktu terakhir dimodifikasi dari objek.
print(f'Objek: {o.key}, {o.size}, {o.last_modified}')
if __name__ == "__main__":
main() # Tentukan titik masuk dalam fungsi utama skrip saat skrip dijalankan langsung.Go
Untuk instruksi lebih lanjut, 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"
)
// Tentukan 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(®ion, "region", "", "Wilayah tempat bucket berada.")
flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}
func main() {
// Parse parameter baris perintah.
flag.Parse()
// Periksa apakah nama bucket telah ditentukan.
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, nama bucket diperlukan")
}
// Periksa apakah wilayah telah ditentukan.
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("parameter tidak valid, wilayah diperlukan")
}
// Muat konfigurasi default dan tentukan penyedia kredensial dan wilayah.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// Buat klien OSS.
client := oss.NewClient(cfg)
// Buat permintaan untuk mendaftarkan objek.
request := &oss.ListObjectsV2Request{
Bucket: oss.Ptr(bucketName),
}
// Buat paginator.
p := client.NewListObjectsV2Paginator(request)
// Inisialisasi penghitung nomor halaman.
var i int
log.Println("Objek:")
// Telusuri setiap halaman dalam paginator.
for p.HasNext() {
i++
// Dapatkan 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 di halaman tersebut.
for _, obj := range page.Contents {
log.Printf("Objek:%v, %v, %v\n", oss.ToString(obj.Key), obj.Size, oss.ToTime(obj.LastModified))
}
}
}
PHP
Untuk instruksi lebih lanjut, lihat Daftar objek (PHP SDK V2).
<?php
// Masukkan file autoload untuk memuat library dependen.
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// Tentukan deskripsi untuk parameter baris perintah.
$optsdesc = [
"region" => ['help' => 'Wilayah tempat bucket berada.', 'required' => True], // (Diperlukan) Tentukan wilayah tempat bucket berada.
"endpoint" => ['help' => 'Domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False], // (Opsional) Tentukan endpoint yang dapat digunakan oleh layanan lain untuk mengakses OSS.
"bucket" => ['help' => 'Nama bucket', 'required' => True], // (Diperlukan) Tentukan nama bucket.
];
// Konversi deskripsi parameter menjadi daftar opsi panjang yang diperlukan oleh getopt.
// Tambahkan titik dua (:) di akhir setiap parameter untuk menunjukkan bahwa nilai diperlukan.
$longopts = \array_map(function ($key) {
return "$key:";
}, array_keys($optsdesc));
// Parse parameter baris perintah.
$options = getopt("", $longopts);
// Periksa apakah parameter yang diperlukan telah dikonfigurasi.
foreach ($optsdesc as $key => $value) {
if ($value['required'] === True && empty($options[$key])) {
$help = $value['help']; // Dapatkan informasi bantuan tentang parameter.
echo "Error: argumen berikut diperlukan: --$key, $help" . PHP_EOL;
exit(1); // Jika parameter yang diperlukan tidak dikonfigurasi, keluar dari program.
}
}
// Dapatkan nilai dari parameter yang di-parse.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.
// Dapatkan kredensial akses dari variabel lingkungan.
// Dapatkan AccessKey ID dan AccessKey secret dari EnvironmentVariableCredentialsProvider variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
// Gunakan konfigurasi default SDK.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider); // Tentukan penyedia kredensial.
$cfg->setRegion($region); // Tentukan wilayah tempat bucket berada.
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]); // Tentukan endpoint jika endpoint disediakan.
}
// Buat instance OSSClient.
$client = new Oss\Client($cfg);
// Buat objek Paginator untuk mendaftarkan objek per halaman.
// Daftarkan objek per halaman menggunakan objek ListObjectsV2Paginator.
$paginator = new Oss\Paginator\ListObjectsV2Paginator(client: $client);
$iter = $paginator->iterPage(new Oss\Models\ListObjectsV2Request(bucket: $bucket)); // Inisialisasi paginator.
// Telusuri objek yang didaftarkan.
foreach ($iter as $page) {
foreach ($page->contents ?? [] as $object) {
// Tampilkan informasi tentang setiap objek di halaman tersebut.
// Tampilkan nama, tipe, dan ukuran setiap objek.
print("Objek: $object->key, $object->type, $object->size\n");
}
}
C#
Untuk instruksi lebih lanjut, lihat Daftar objek (C# SDK V2).
using OSS = AlibabaCloud.OSS.V2; // Buat alias untuk Alibaba Cloud OSS SDK untuk menyederhanakan penggunaan selanjutnya.
var region = "cn-hangzhou"; // Diperlukan. Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (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 China (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
var bucket = "nama bucket Anda"; // Diperlukan. Nama bucket tujuan.
// Muat konfigurasi default OSS SDK. Konfigurasi secara otomatis membaca informasi kredensial (seperti AccessKey) dari variabel lingkungan.
var cfg = OSS.Configuration.LoadDefault();
// Secara eksplisit atur penggunaan variabel lingkungan untuk mendapatkan kredensial untuk 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, itu akan menimpa endpoint default.
if(endpoint != null)
{
cfg.Endpoint = endpoint;
}
// Buat instance klien OSS menggunakan informasi konfigurasi.
using var client = new OSS.Client(cfg);
// Panggil metode ListObjectsV2Paginator untuk mendapatkan semua objek dalam bucket tujuan.
var paginator = client.ListObjectsV2Paginator(new OSS.Models.ListObjectsV2Request()
{
Bucket = bucket
});
// Cetak informasi semua objek dalam bucket.
Console.WriteLine("Objek:");
await foreach (var page in paginator.IterPageAsync()) // Secara asinkron telusuri setiap halaman hasil.
{
// Telusuri setiap objek di halaman saat ini.
foreach (var content in page.Contents ?? [])
{
// Cetak informasi objek: key, size (dalam byte), dan waktu terakhir dimodifikasi.
Console.WriteLine($"Objek:{content.Key}, {content.Size}, {content.LastModified}");
}
}Node.js
Untuk instruksi lebih lanjut, 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 China (Hangzhou), atur wilayah ke oss-cn-hangzhou.
region: 'yourregion',
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan bahwa Anda telah mengonfigurasi variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET.
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;
// Daftarkan hingga 20 objek di setiap 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 instruksi lebih lanjut, lihat Daftar objek.
import Client, { RequestError } from '@aliyun/oss';
// Buat instance OSSClient.
const client = new Client({
// Tentukan AccessKey ID dari pengguna RAM.
accessKeyId: 'yourAccessKeyId',
// Tentukan AccessKey secret dari pengguna RAM.
accessKeySecret: 'yourAccessKeySecret',
// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke oss-cn-hangzhou.
region: 'oss-cn-hangzhou',
});
/**
* Daftarkan objek dalam bucket per halaman.
* Gunakan metode listObjectsV2 dan tentukan parameter continuationToken untuk mendaftarkan objek per halaman.
*/
const listObjectsV2WithContinuationToken = async () => {
try {
let continuationToken: string | undefined; // Tentukan token untuk halaman berikutnya, yang kosong secara default.
let isTruncated=true; // Menentukan apakah hasil daftar dipotong.
// Telusuri dan daftarkan objek.
while (isTruncated) {
const res = await client.listObjectsV2({
bucket: 'yourBucketName', // Tentukan nama bucket.
continuationToken, // Tentukan token untuk halaman berikutnya.
});
// Tampilkan objek dan metadata mereka di halaman ini.
console.log(JSON.stringify(res));
// Perbarui status paging.
isTruncated = res.data.isTruncated; // Menentukan apakah hasil daftar dipotong.
continuationToken = res.data.nextContinuationToken; // Tentukan token untuk halaman berikutnya.
}
} catch (err) {
// Tangkap pengecualian selama permintaan.
if (err instanceof RequestError) {
console.log('kode: ', err.code); // Kode kesalahan.
console.log('pesan: ', err.message); // Pesan kesalahan.
console.log('requestId: ', err.requestId); // ID permintaan.
console.log('status: ', err.status); // Kode status HTTP.
console.log('ec: ', err.ec); // EC.
} else {
console.log('kesalahan tidak dikenal: ', err);
}
}
};
// Panggil fungsi listObjectsV2WithContinuationToken untuk mendaftarkan objek per halaman.
listObjectsV2WithContinuationToken();
Swift
Untuk instruksi lebih lanjut, lihat Daftar objek.
import AlibabaCloudOSS
import Foundation
@main
struct Main {
static func main() async {
do {
// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou.
let region = "cn-hangzhou"
// Tentukan nama bucket.
let bucket = "namaBucketAnda"
// Opsional. Tentukan endpoint untuk mengakses layanan OSS. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com
let endpoint: String? = nil
// Dapatkan kredensial dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan bahwa 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 instance klien OSS
let client = Client(config)
// Buat objek permintaan paginator untuk menelusuri semua objek dalam bucket (pemrosesan paging)
let paginator = client.listObjectsV2Paginator(
ListObjectsV2Request(
bucket: bucket // Tentukan nama bucket untuk mendaftarkan objek
)
)
// Telusuri hasil paging dan dapatkan informasi objek halaman demi halaman
for try await page in paginator {
// Telusuri daftar objek di halaman saat ini
for content in page.contents ?? [] {
// Keluarkan metadata objek: nama objek, ukuran (byte), dan waktu terakhir dimodifikasi
print("Kunci objek:\(content.key ?? ""), ukuran: \(String(describing: content.size)), terakhir dimodifikasi: \(String(describing: content.lastModified))")
}
}
} catch {
// Output kesalahan
print("kesalahan:\(error)")
}
}
}Ruby
Untuk instruksi lebih lanjut, lihat Daftar objek.
require 'aliyun/oss'
client = Aliyun::OSS::Client.new(
# Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
# Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan bahwa 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')
# Daftarkan semua objek dalam bucket.
objects = bucket.list_objects
objects.each { |o| puts o.key } Browser.js
Untuk instruksi lebih lanjut, lihat Daftar objek.
<!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({
// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke oss-cn-hangzhou.
region: "yourRegion",
authorizationV4: true,
// Tentukan pasangan AccessKey sementara yang diperoleh dari STS. Pasangan AccessKey terdiri dari AccessKey ID dan AccessKey secret.
accessKeyId: 'yourAccessKeyId',
accessKeySecret: 'yourAccessKeySecret',
// Tentukan token keamanan yang Anda peroleh dari STS.
stsToken: 'yourSecurityToken',
// Tentukan nama bucket. Contoh: examplebucket.
bucket: "examplebucket",
});
async function list(dir) {
try {
// Secara default, hingga 1.000 objek didaftarkan.
let result = await client.list();
console.log(result);
// Operasi daftar dilanjutkan dari objek terakhir yang berhenti di operasi daftar sebelumnya.
if (result.isTruncated) {
result = await client.list({ marker: result.nextMarker });
}
// Daftarkan objek yang namanya dimulai dengan awalan 'ex'.
result = await client.list({
prefix: "ex",
});
console.log(result);
// Daftarkan semua objek yang namanya dimulai dengan awalan 'ex' dan secara alfabetis setelah objek 'example'.
result = await client.list({
prefix: "ex",
marker: "example",
});
console.log(result);
} catch (e) {
console.log(e);
}
}
list();
</script>
</body>
</html>
Android
Untuk instruksi lebih lanjut, lihat Daftar objek.
private String marker = null;
private boolean isCompleted = false;
// Daftarkan semua objek dalam bucket per halaman.
public void getAllObject() {
do {
OSSAsyncTask task = getObjectList();
// Tunggu hingga NextMarker dikembalikan untuk permintaan sebelumnya. Atur parameter marker dalam permintaan saat ini ke nilai NextMarker yang dikembalikan dalam respons untuk permintaan sebelumnya. Anda tidak perlu mengatur marker dalam permintaan pertama.
// Dalam contoh ini, loop digunakan untuk mendaftarkan objek per halaman. Oleh karena itu, permintaan hanya dapat dikirim setelah nilai NextMarker untuk permintaan sebelumnya dikembalikan. Anda dapat menentukan apakah akan menunggu nilai NextMarker yang dikembalikan untuk permintaan sebelumnya.
task.waitUntilFinished();
} while (!isCompleted);
}
// Daftarkan objek di halaman.
public OSSAsyncTask getObjectList() {
// Tentukan nama bucket.
ListObjectsRequest request = new ListObjectsRequest("examplebucket");
// Tentukan jumlah maksimum objek yang dapat didaftarkan di setiap halaman. Jika Anda tidak menentukan parameter ini, hingga 100 objek dikembalikan. Nilai maksimum yang dapat Anda tentukan untuk MaxKeys adalah 1000.
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());
}
// Daftarkan objek di halaman terakhir.
if (!result.isTruncated()) {
isCompleted = true;
return;
}
// Dapatkan nilai marker untuk permintaan 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("KodeKesalahan", serviceException.getErrorCode());
Log.e("IDPermintaan", serviceException.getRequestId());
Log.e("IDHost", serviceException.getHostId());
Log.e("PesanMentah", serviceException.getRawMessage());
}
}
});
return task;
}C++
Untuk instruksi lebih lanjut, lihat Daftar objek.
#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;
int main(void)
{
/* Inisialisasi informasi tentang akun yang digunakan untuk mengakses OSS. */
/* Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com. */
std::string Endpoint = "yourEndpoint";
/* Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. */
std::string Region = "yourRegion";
/* Tentukan nama bucket. Contoh: examplebucket. */
std::string BucketName = "examplebucket";
/* Inisialisasi sumber daya seperti sumber daya jaringan. */
InitializeSdk();
ClientConfiguration conf;
conf.signatureVersion = SignatureVersionType::V4;
/* Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan bahwa 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 {
/* Daftarkan 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() <<
",IDPermintaan:" << 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 terakhir dimodifikasi:" << object.LastModified() << std::endl;
}
}
nextMarker = outcome.result().NextMarker();
isTruncated = outcome.result().IsTruncated();
} while (isTruncated);
/* Lepaskan sumber daya seperti sumber daya jaringan. */
ShutdownSdk();
return 0;
}iOS
Untuk instruksi lebih lanjut, lihat Daftar objek.
do {
OSSGetBucketRequest *getBucket = [OSSGetBucketRequest new];
getBucket.bucketName = @"examplebucket";
getBucket.marker = _marker; // Mengakses variabel instance _marker
getBucket.maxKeys = 20;
OSSTask *getBucketTask = [client getBucket:getBucket];
[getBucketTask continueWithBlock:^id(OSSTask *task) {
if (!task.error) {
OSSGetBucketResult *result = task.result;
NSLog(@"Mendapatkan bucket berhasil!");
NSLog(@"objek: %@", result.contents);
if (result.isTruncated) {
_marker = result.nextMarker; // Perbarui variabel instance _marker
_isCompleted = NO;
} else {
_isCompleted = YES;
}
} else {
_isCompleted = YES;
NSLog(@"Mendapatkan bucket gagal, kesalahan: %@", task.error);
}
return nil;
}];
// Implementasikan pemblokiran sinkron untuk menunggu tugas selesai.
[getBucketTask waitUntilFinished];
} while (!_isCompleted);C
Untuk instruksi lebih lanjut, lihat Daftar objek.
#include "oss_api.h"
#include "aos_http_io.h"
/* Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com. */
const char *endpoint = "yourEndpoint";
/* Tentukan nama bucket. Contoh: examplebucket. */
const char *bucket_name = "examplebucket";
/* Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (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);
/* Gunakan string char* untuk menginisialisasi data dari tipe aos_string_t. */
aos_str_set(&options->config->endpoint, endpoint);
/* Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan bahwa variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. */
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"));
// Tentukan dua parameter tambahan.
aos_str_set(&options->config->region, region);
options->config->signature_version = 4;
/* Tentukan apakah menggunakan CNAME. Nilai 0 menunjukkan bahwa CNAME tidak digunakan. */
options->config->is_cname = 0;
/* Tentukan 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 main() untuk menginisialisasi sumber daya global, seperti sumber daya jaringan dan memori. */
if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
exit(1);
}
/* Buat pool memori untuk mengelola memori. aos_pool_t setara dengan apr_pool_t. Kode yang digunakan untuk membuat pool memori termasuk dalam pustaka APR. */
aos_pool_t *pool;
/* Buat pool memori. Nilai parameter kedua adalah NULL. Nilai ini menunjukkan bahwa pool tidak mewarisi pool memori lain. */
aos_pool_create(&pool, NULL);
/* Buat dan inisialisasi opsi. Parameter ini mencakup informasi konfigurasi global, seperti endpoint, access_key_id, access_key_secret, is_cname, dan curl. */
oss_request_options_t *oss_client_options;
/* Alokasikan sumber daya memori di pool memori untuk opsi. */
oss_client_options = oss_request_options_create(pool);
/* Inisialisasi 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);
/* Atur parameter max_ret untuk menentukan jumlah maksimum objek yang akan dikembalikan. */
/* Secara default, maksimal 1.000 objek dapat didaftarkan pada satu waktu. Jika jumlah objek yang akan didaftarkan melebihi 1.000, hanya 1.000 objek pertama dalam urutan alfabet yang dikembalikan. Dalam hasil yang dikembalikan, nilai truncated adalah true, dan nilai next_marker dikembalikan sebagai titik awal untuk kueri berikutnya. */
params->max_ret = 100;
aos_str_set(¶ms->prefix, prefix);
aos_str_set(¶ms->marker, nextMarker);
printf("Objek\tUkuran\tTerakhirDimodifikasi\n");
/* Daftarkan semua objek. */
do {
resp_status = oss_list_object(oss_client_options, &bucket, params, NULL);
if (!aos_status_is_ok(resp_status))
{
printf("daftar objek gagal\n");
break;
}
aos_list_for_each_entry(oss_list_object_content_t, content, ¶ms->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(¶ms->marker, nextMarker);
aos_list_init(¶ms->object_list);
aos_list_init(¶ms->common_prefix_list);
} while (params->truncated == AOS_TRUE);
printf("Total %d\n", size);
/* Lepaskan pool memori. Operasi ini melepaskan sumber daya memori yang dialokasikan untuk permintaan. */
aos_pool_destroy(pool);
/* Lepaskan sumber daya global yang dialokasikan. */
aos_http_io_deinitialize();
return 0;
}Gunakan ossutil
Contoh berikut menunjukkan cara mencantumkan informasi tentang semua objek di examplebucket.
ossutil api list-objects-v2 --bucket examplebucketUntuk informasi selengkapnya, lihat list-objects-v2 (get-bucket-v2).
Gunakan Konsol OSS
Masuk ke Konsol OSS.
Di panel navigasi di sebelah kiri, klik Buckets.
Pergi ke bucket tujuan dan klik Object Management > Objects.
Halaman menampilkan semua objek di dalam bucket dalam daftar berhalaman. Secara default, konsol menampilkan 50 objek per halaman, dengan maksimum 500.
Daftarkan semua objek dalam direktori tertentu
Untuk mendapatkan daftar datar dari semua objek dalam direktori tertentu, termasuk subdirektori, atur parameter prefix.
Parameter prefix mengembalikan daftar objek yang difilter, hanya mencakup objek yang Keys-nya dimulai dengan string yang ditentukan. Karena OSS menggunakan struktur penyimpanan datar tanpa folder fisik, mekanisme penyaringan sederhana ini secara efektif meniru penelusuran direktori, memungkinkan Anda mengambil semua objek dalam folder logis.
Gunakan OSS SDK
Java
Untuk kode sampel lengkap, lihat Daftar objek (Java SDK).
// ...
// Kode utama: Atur prefix.
ListObjectsV2Request listObjectsV2Request = new ListObjectsV2Request(bucketName);
listObjectsV2Request.setPrefix("images/"); // Tentukan prefix.
ListObjectsV2Result result = ossClient.listObjectsV2(listObjectsV2Request);
// ...Python
Untuk kode sampel lengkap, lihat Daftar objek (Python SDK V2).
# ...
# Kode utama: Tambahkan parameter prefix.
for page in paginator.iter_page(oss.ListObjectsV2Request(
bucket='your-bucket',
prefix='images/' # Tentukan prefix.
)):
# ...Go
Untuk kode sampel lengkap, lihat Daftar objek (Go SDK V2).
// ...
// Kode utama: Atur prefix.
request := &oss.ListObjectsV2Request{
Bucket: oss.Ptr(bucketName),
Prefix: oss.Ptr("images/"), // Daftarkan semua objek dengan prefix yang ditentukan.
}
// ...Node.js
Untuk kode sampel lengkap, lihat Daftar objek (Node.js).
// ...
// Kode utama: Atur prefix.
const result = await client.listV2({
prefix: 'images/' // Tentukan prefix.
});
// ...Harmony
Untuk kode sampel lengkap, lihat Daftar objek.
// ...
// Kode utama: Atur prefix.
const res = await client.listObjectsV2({
bucket: 'yourBucketName',
prefix: 'images/', // Tentukan prefix.
});
// ...Ruby
Untuk kode sampel lengkap, lihat Daftar objek.
# ...
# Kode utama: Atur prefix.
objects = bucket.list_objects(:prefix => 'images/') # Tentukan prefix.
# ...Android
Untuk kode sampel lengkap, lihat Daftar objek.
// ...
// Kode utama: Atur prefix.
ListObjectsRequest request = new ListObjectsRequest("examplebucket");
request.setPrefix("images/"); // Tentukan prefix.
// ...C++
Untuk kode sampel lengkap, lihat Daftar objek.
// ...
// Kode utama: Atur prefix.
ListObjectsRequest request(BucketName);
request.setPrefix("images/"); // Tentukan prefix.
// ...iOS
Untuk kode sampel lengkap, lihat Daftar objek.
// ...
// Kode utama: Atur prefix.
getBucket.prefix = @"images/"; // Tentukan prefix.
// ...C
Untuk kode sampel lengkap, lihat Daftar objek.
// ...
// Kode utama: Atur prefix.
char *prefix = "images/"; // Tentukan prefix.
aos_str_set(¶ms->prefix, prefix);
// ...Gunakan ossutil
Contoh berikut menunjukkan cara mencantumkan informasi tentang semua objek dengan prefix dir/ di examplebucket.
ossutil api list-objects-v2 --bucket examplebucket --prefix dir/Untuk informasi lebih lanjut, lihat list-objects-v2 (get-bucket-v2).
Contoh keluaran
Asumsikan bucket berisi objek berikut:
images/cat.jpg
images/dog.png
images/archive/old.zip
readme.txtSaat Anda mengatur prefix="images/" dalam permintaan Anda, respons berikut dikembalikan:
images/
images/archive/
images/archive/old.zip
images/cat.jpg
images/dog.pngDaftarkan objek langsung dan subdirektori dalam direktori tertentu
Dengan menambahkan parameter delimiter (biasanya diatur ke /) bersama dengan parameter prefix, Anda dapat membagi hasil menjadi dua bagian: Objek dan CommonPrefixes (subdirektori).
Parameter delimiter mengelompokkan objek berdasarkan hierarki. Saat ada, OSS memproses hasil yang difilter oleh prefix dalam langkah kedua:
Kunci yang tidak mengandung
/setelahprefixdikembalikan dalam daftarObjek.Kunci yang berisi
/setelahawalandikelompokkan. Bagian kunci dari awal hingga kemunculan pertama/kemudian dikembalikan dalam daftarCommonPrefixes.
Gunakan OSS SDK
Java
Untuk kode contoh lengkap, lihat Daftar objek (Java SDK).
// ...
// Kode utama: Atur pemisah.
ListObjectsV2Request listObjectsV2Request = new ListObjectsV2Request(bucketName);
listObjectsV2Request.setPrefix("images/"); // Tentukan direktori.
listObjectsV2Request.setDelimiter("/"); // Atur pemisah.
ListObjectsV2Result result = ossClient.listObjectsV2(listObjectsV2Request);
// Telusuri objek dalam direktori saat ini.
for (OSSObjectSummary objectSummary : result.getObjectSummaries()) {
System.out.println("Objek: " + objectSummary.getKey());
}
// Telusuri subdirektori.
for (String commonPrefix : result.getCommonPrefixes()) {
System.out.println("Subdirektori: " + commonPrefix);
}
// ...Python
Untuk kode contoh lengkap, lihat Daftar objek (PythonSDK V2).
# ...
# Kode utama: Tambahkan parameter pemisah.
for page in paginator.iter_page(oss.ListObjectsV2Request(
bucket=args.bucket,
prefix="images/", # Tentukan direktori.
delimiter="/", # Atur pemisah.
)):
# Telusuri objek dalam direktori saat ini.
for file in page.contents:
print(f'Objek: {file.key}')
# Telusuri subdirektori.
for prefix in page.common_prefixes:
print(f'Subdirektori: {prefix.prefix}')
# ...Go
// ...
// Kode utama: Atur pemisah.
request := &oss.ListObjectsV2Request{
Bucket: oss.Ptr(bucketName),
Prefix: oss.Ptr("images/"), // Tentukan direktori.
Delimiter: oss.Ptr("/"), // Atur pemisah.
}
// Telusuri objek dalam direktori saat ini.
for _, obj := range lsRes.Contents {
log.Printf("Objek: %v\n", oss.ToString(obj.Key))
}
// Telusuri subdirektori.
for _, prefix := range lsRes.CommonPrefixes {
log.Printf("Subdirektori: %v\n", *prefix.Prefix)
}
// ...PHP
Untuk kode contoh lengkap, lihat Daftar objek (PHP SDK V2).
// ...
// Kode utama: Buat paginator dan atur pemisah untuk membedakan antara objek dan subdirektori.
$paginator = new Oss\Paginator\ListObjectsV2Paginator(client: $client);
$iter = $paginator->iterPage(new Oss\Models\ListObjectsV2Request(
bucket: $bucket,
prefix: "",
delimiter: "/"
));
// Telusuri hasil yang dipaginasi.
foreach ($iter as $page) {
// Telusuri konten untuk mendapatkan objek dalam direktori saat ini.
foreach ($page->contents ?? [] as $object) {
echo "Objek: " . $object->key . PHP_EOL;
}
// Telusuri commonPrefixes untuk mendapatkan subdirektori.
foreach ($page->commonPrefixes ?? [] as $prefixObject) {
echo "Subdirektori: " . $prefixObject->prefix . PHP_EOL;
}
}
// ...Node.js
Untuk kode contoh lengkap, lihat Daftar objek (Node.js).
// ...
// Kode utama: Atur pemisah.
const result = await client.listV2({
prefix: dir, // Tentukan direktori.
delimiter: '/' // Atur pemisah.
});
// Telusuri objek dalam direktori saat ini.
if (result && result.objects) {
result.objects.forEach(obj => {
console.log('Objek: %s', obj.name);
});
}
// Telusuri subdirektori.
if (result && result.prefixes) {
result.prefixes.forEach(subDir => {
console.log('Subdirektori: %s', subDir);
});
}
// ...Harmony
Untuk kode contoh lengkap, lihat Daftar objek.
// ...
// Kode utama: Atur pemisah.
const res = await client.listObjectsV2({
bucket: 'yourBucketName', // Nama bucket.
prefix: 'images/', // Tentukan direktori.
delimiter: '/', // Atur pemisah.
});
// Telusuri objek dalam direktori saat ini.
if (res && res.objects) {
res.objects.forEach(obj => {
console.log('Objek:', obj.name);
});
}
// Telusuri subdirektori.
if (res && res.prefixes) {
res.prefixes.forEach(subDir => {
console.log('Subdirektori:', subDir);
});
}
// ...Browser.js
Untuk kode contoh lengkap, lihat Daftar objek.
// ...
// Kode utama: Atur pemisah.
let result = await client.list({
prefix: 'images/', // Tentukan direktori.
delimiter: "/", // Atur pemisah.
});
// Telusuri objek dalam direktori saat ini.
result.objects.forEach(function (obj) {
console.log("Objek: %s", obj.name);
});
// Telusuri subdirektori.
result.prefixes.forEach(function (subDir) {
console.log("Subdirektori: %s", subDir);
});
// ...Ruby
Untuk kode contoh lengkap, lihat Daftar objek.
// ...
// Kode utama: Atur pemisah.
objects = bucket.list_objects(prefix: 'images/', delimiter: '/')
// Telusuri objek dalam direktori saat ini.
if obj.is_a?(Aliyun::OSS::Object)
puts "Objek: #{obj.key}"
end
// Telusuri subdirektori.
if obj.is_a?(String) # Common Prefix
puts "Subdirektori: #{obj}"
end
// ...C++
Untuk kode contoh lengkap, lihat Daftar objek.
// ...
// Kode utama: Atur pemisah.
ListObjectsRequest request(BucketName);
request.setPrefix("images/"); // Tentukan direktori.
request.setDelimiter("/"); // Atur pemisah.
// Telusuri objek dalam direktori saat ini.
for (const auto& object : outcome.result().ObjectSummarys()) {
std::cout << "Objek:" << object.Key() << std::endl;
}
// Telusuri subdirektori.
for (const auto& commonPrefix : outcome.result().CommonPrefixes()) {
std::cout << "Subdirektori:" << commonPrefix << std::endl;
}
// ...C
Untuk kode contoh lengkap, lihat Daftar objek.
// ...
// Kode utama: Atur pemisah.
params = oss_create_list_object_params(pool);
aos_str_set(¶ms->prefix, "images/"); // Tentukan direktori.
aos_str_set(¶ms->delimiter, "/"); // Atur pemisah.
// Telusuri objek dalam direktori saat ini.
aos_list_for_each_entry(oss_list_object_content_t, content, ¶ms->object_list, node) {
printf("Objek: %.*s\n", content->key.len, content->key.data);
}
// Telusuri subdirektori.
aos_list_for_each_entry(oss_list_object_common_prefix_t, commonPrefix, ¶ms->common_prefix_list, node) {
printf("Subdirektori: %.*s\n", commonPrefix->prefix.len, commonPrefix->prefix.data);
}
// ...Gunakan ossutil
Berikut adalah contoh cara mencantumkan objek langsung dan subdirektori dalam direktori images/ dari examplebucket.
ossutil api list-objects-v2 --bucket examplebucket --prefix images/ --delimiter /Untuk informasi lebih lanjut, lihat list-objects-v2 (get-bucket-v2).
Contoh output
Saat Anda mengatur prefix="images/" dan delimiter="/", hasilnya dikelompokkan:
Objek:
images/
images/cat.jpg
images/dog.png
Direktori:
images/archive/Daftar objek setelah posisi tertentu
Gunakan parameter startAfter (atau marker di beberapa SDK lama) untuk melewati semua kunci objek yang muncul sebelum kunci tertentu dalam urutan leksikografis.
Gunakan OSS SDK
Java
Untuk kode contoh lengkap, lihat Daftar objek (Java SDK).
// ...
// Kode utama: Atur posisi awal.
ListObjectsV2Request listObjectsV2Request = new ListObjectsV2Request(bucketName);
listObjectsV2Request.setStartAfter("images/cat.jpg"); // Mulai mendaftar 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 mendaftar 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 mendaftar 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", // Tentukan posisi awal untuk mendaftar objek.
));
// ...Ruby
Untuk kode contoh lengkap, lihat Daftar objek.
# ...
# Kode utama: Atur marker (posisi awal).
objects = bucket.list_objects(:marker => 'images/cat.jpg') # Mulai mendaftar setelah objek yang ditentukan.
# ...Android
Untuk kode contoh lengkap, lihat Daftar objek.
// ...
// Kode utama: Atur marker (posisi awal).
ListObjectsRequest request = new ListObjectsRequest("examplebucket");
request.setMarker("images/cat.jpg"); // Mulai mendaftar setelah objek yang ditentukan.
// ...C++
Untuk kode contoh lengkap, lihat Daftar objek.
// ...
// Kode utama: Atur marker (posisi awal).
ListObjectsRequest request(BucketName);
request.setMarker("images/cat.jpg"); // Mulai mendaftar setelah objek yang ditentukan.
// ...iOS
Untuk kode contoh lengkap, lihat Daftar objek.
// ...
// Kode utama: Atur marker (posisi awal).
getBucket.marker = @"images/cat.jpg"; // Mulai mendaftar setelah objek yang ditentukan.
// ...C
Untuk kode contoh lengkap, lihat Daftar objek.
// ...
// Kode utama: Atur marker (posisi awal).
char *nextMarker = "images/cat.jpg"; // Mulai mendaftar setelah objek yang ditentukan.
aos_str_set(¶ms->marker, nextMarker);
// ...Gunakan ossutil
Berikut adalah contoh cara mencantumkan informasi tentang objek yang muncul setelah test.txt di examplebucket.
ossutil api list-objects-v2 --bucket examplebucket --start-after test.txtUntuk informasi lebih lanjut, lihat list-objects-v2 (get-bucket-v2).
Contoh keluaran:
Asumsikan bucket berisi:
images/cat.jpg
images/dog.png
images/archive/old.zip
readme.txtKetika Anda mengatur start-after="images/cat.jpg", keluaran tidak akan menyertakan "images/cat.jpg" atau objek apa pun yang mendahuluinya dalam urutan leksikografis:
images/dog.png
readme.txtAtur jumlah objek per halaman
Parameter MaxKey mengontrol jumlah objek yang dikembalikan dalam satu permintaan. Nilai defaultnya adalah 100, dan nilai maksimumnya adalah 1.000.
Gunakan OSS SDK
Java
Untuk kode sampel lengkap, lihat Daftar objek (Java SDK).
// ...
// Kode utama: Tambahkan parameter max_keys untuk mengatur jumlah objek per halaman.
ListObjectsV2Request listObjectsV2Request = new ListObjectsV2Request(bucketName);
listObjectsV2Request.setMaxKeys(1000); // Atur jumlah maksimum objek per halaman menjadi 1000.
ListObjectsV2Result result = ossClient.listObjectsV2(listObjectsV2Request);
// ...Python
Untuk kode sampel 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, # Atur jumlah maksimum objek per halaman menjadi 1000.
)):
# ...Go
Untuk kode sampel lengkap, lihat Daftar objek (Go SDK V2).
// ...
// Kode utama: Tambahkan parameter max_keys untuk mengatur jumlah objek per halaman.
request := &oss.ListObjectsV2Request{
Bucket: oss.Ptr(bucketName),
MaxKeys: 1000, // Atur jumlah maksimum objek per halaman menjadi 1000.
}
// ...PHP
Untuk kode sampel 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: 10, // Jumlah maksimum objek yang akan dikembalikan untuk setiap daftar.
));
// ...Node.js
Untuk kode sampel 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 // Atur jumlah maksimum objek per halaman menjadi 1000.
});
// ...Android
Untuk kode sampel lengkap, lihat Daftar objek.
// ...
// Kode utama: Tambahkan parameter max_keys untuk mengatur jumlah objek per halaman.
ListObjectsRequest request = new ListObjectsRequest("examplebucket");
request.setMaxKeys(1000); // Atur jumlah maksimum objek per halaman menjadi 1000.
// ...C++
Untuk kode sampel lengkap, lihat Daftar objek.
// ...
// Kode utama: Tambahkan parameter max_keys untuk mengatur jumlah objek per halaman.
ListObjectsRequest request(BucketName);
request.setMaxKeys(1000); // Atur jumlah maksimum objek per halaman menjadi 1000.
// ...iOS
Untuk kode sampel lengkap, lihat Daftar objek.
// ...
// Kode utama: Tambahkan parameter max_keys untuk mengatur jumlah objek per halaman.
getBucket.maxKeys = 1000; // Atur jumlah maksimum objek per halaman menjadi 1000.
// ...C
Untuk kode sampel lengkap, lihat Daftar objek.
// ...
// Kode utama: Tambahkan parameter max_keys untuk mengatur jumlah objek per halaman.
params->max_ret = 1000; // Atur jumlah maksimum objek per halaman menjadi 1000.
// ...Gunakan ossutil
Contoh berikut menunjukkan cara mencantumkan informasi tentang 100 objek pertama dengan awalan dir di examplebucket.
ossutil api list-objects-v2 --bucket examplebucket --prefix dir/ --max-keys 100Untuk informasi lebih lanjut, lihat list-objects-v2 (get-bucket-v2).
Contoh keluaran:
Asumsikan bucket berisi:
images/cat.jpg
images/dog.png
images/archive/old.zip
readme.txtJika
maxKeysdiatur ke 2, semua objek dikembalikan dalam halaman berisi 2.
Jika
maxKeysdiatur ke 100, semua objek dikembalikan dalam halaman berisi 100.
Terapkan dalam produksi
Optimasi kinerja
Tingkatkan ukuran halaman: Mengatur
max-keyske nilai maksimumnya yaitu 1.000 dapat secara signifikan mengurangi jumlah panggilan API, terutama dalam kondisi jaringan yang baik. Namun, pertimbangkan penggunaan memori untuk menghindari memuat terlalu banyak data sekaligus.Proses prefix secara paralel: Jika Anda memiliki ratusan ribu objek atau lebih, pencatatan sederhana secara berurutan bisa lambat. Dalam hal ini, tingkatkan kecepatan pencatatan dengan memproses direktori logis yang berbeda (prefix) secara paralel, seperti
images/,documents/, danlogs/.Cached struktur direktori: Untuk struktur direktori yang jarang berubah, cached hasil pencatatan untuk mengurangi panggilan API redundan.
Kontrol biaya
Hindari pemindaian penuh yang sering: Mendaftarkan semua objek dalam bucket besar secara berkala bisa mahal. Pertimbangkan alternatif yang lebih hemat biaya ini:
Untuk secara berkala menghasilkan manifest objek lengkap, gunakan Inventaris yang lebih murah. Ini ideal untuk analisis skala besar secara berkala.
Untuk merespons unggahan atau penghapusan objek secara real-time, gunakan notifikasi acara. Ini lebih efisien dan hemat biaya daripada mendaftarkan objek.
Konfigurasikan paginasi secara wajar: Ukuran halaman yang terlalu kecil meningkatkan jumlah panggilan API, sedangkan yang terlalu besar dapat meningkatkan waktu pemrosesan dan konsumsi memori untuk satu permintaan.
Kuota dan batasan
Jumlah item maksimum per respons: Permintaan
ListObjectsatauListObjectsV2tunggal dapat mengembalikan hingga 1.000 kunci objek.Metode pengurutan: Hanya pengurutan leksikografis berdasarkan kunci objek yang didukung.
FAQ
Apakah OSS mendukung pencatatan sejumlah halaman objek tertentu?
Nomor.
Bagaimana cara saya mendaftarkan semua objek dalam direktori tertentu?
Untuk mendaftarkan semua objek dalam direktori tertentu, termasuk nama mereka dan struktur direktori, gunakan perintah list-objects-v2 (get-bucket-v2) dari ossutil 2.0.
Apakah pengurutan berdasarkan waktu terakhir dimodifikasi didukung saat mendaftarkan objek?
Tidak. Jika Anda perlu mengurutkan objek berdasarkan waktu terakhir dimodifikasi, gunakan pengindeksan data.