全部产品
Search
文档中心

Object Storage Service:Daftar objek (Swift SDK)

更新时间:Nov 30, 2025

Topik ini menjelaskan cara menggunakan OSS Swift SDK untuk mendaftar semua objek dalam bucket tertentu.

Catatan

  • Kode contoh dalam topik ini menggunakan wilayah China (Hangzhou) (ID wilayah: cn-hangzhou) sebagai contoh. Secara default, titik akhir publik digunakan. Jika Anda ingin mengakses OSS dari layanan Alibaba Cloud lainnya di wilayah yang sama, Anda dapat menggunakan titik akhir internal. Untuk informasi selengkapnya tentang wilayah dan titik akhir yang didukung oleh OSS, lihat Wilayah dan titik akhir.

  • Untuk mencantumkan objek, Anda harus memiliki izin oss:ListObjects. Untuk informasi lebih lanjut, lihat Memberikan izin kustom kepada Pengguna RAM.

Kode contoh

Kode berikut menunjukkan cara menggunakan metode ListObjectsV2 untuk mendaftar objek dalam bucket tertentu.

import AlibabaCloudOSS
import Foundation
@main
struct Main {
    static func main() async {
        do {
            // Tentukan wilayah tempat bucket berada. Misalnya, atur wilayah ke cn-hangzhou untuk China (Hangzhou).
            let region = "cn-hangzhou"
            // Tentukan nama bucket.
            let bucket = "yourBucketName"
            // Opsional. Tentukan nama domain yang digunakan untuk mengakses OSS. Misalnya, atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com untuk China (Hangzhou).
            let endpoint: String? = nil
            
            // Dapatkan 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 titik akhir.
            if let endpoint = endpoint {
                config.withEndpoint(endpoint)
            }
            
            // Buat instans klien OSS.
            let client = Client(config)
            
            // Tentukan token tempat operasi daftar dimulai.
            var continueToken: String?
            // Periksa apakah semua objek telah didaftar.
            var isTruncated: Bool = false
            repeat {
                let result = try await client.listObjectsV2(
                    ListObjectsV2Request(
                        bucket: bucket,
                        maxKeys: 10,
                        continuationToken: continueToken
                    )
                )
                // Telusuri daftar objek pada halaman saat ini.
                for content in result.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))")
                }
                isTruncated = result.isTruncated ?? false
                continueToken = result.nextContinuationToken
            } while isTruncated
        } catch {
            // Cetak error.
            print("error: \(error)")
        }
    }
}

Skenario umum

Gunakan paginator untuk mendaftarkan objek dalam bucket yang ditentukan

Kode berikut menunjukkan cara menggunakan metode ListObjectsV2 dengan paginator untuk mendaftar objek dalam bucket tertentu.

import AlibabaCloudOSS
import Foundation
@main
struct Main {
    static func main() async {
        do {
            // Tentukan wilayah tempat bucket berada. Misalnya, atur wilayah ke cn-hangzhou untuk China (Hangzhou).
            let region = "cn-hangzhou"
            // Tentukan nama bucket.
            let bucket = "yourBucketName"
            // Opsional. Tentukan nama domain yang digunakan untuk mengakses OSS. Misalnya, atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com untuk China (Hangzhou).
            let endpoint: String? = nil
            
            // Dapatkan 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 titik akhir.
            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 secara bertahap.
            let paginator = client.listObjectsV2Paginator(
                ListObjectsV2Request(
                    bucket: bucket // Tentukan nama bucket yang objeknya ingin Anda daftarkan.
                )
            )
            // Telusuri hasil yang dipaginasi untuk mendapatkan 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 error.
            print("error: \(error)")
        }
    }
}

Referensi

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

  • Untuk informasi selengkapnya tentang operasi API yang digunakan untuk mendaftar objek, lihat ListObjectsV2.