OSS SDK for Go ile bir paket içindeki tüm nesneleri listeleyin.
Notlar
Örnek kod, China (Hangzhou) bölgesi kimliği
cn-hangzhouve genel uç noktayı kullanır. Aynı bölgedeki diğer Alibaba Cloud hizmetlerinden pakete erişmek için dahili uç noktayı kullanın. OSS bölgeleri ve uç noktaları.Erişim kimlik bilgileri ortam değişkenlerinden alınır. Erişim kimlik bilgilerinin nasıl yapılandırılacağı hakkında daha fazla bilgi için bkz. Erişim kimlik bilgilerini yapılandırma.
Nesneleri listelemek için
oss:ListObjectsizni gerekir. RAM kullanıcılarına özel izinler verme.
Yöntemler
Nesneleri listelemeye yönelik gelişmiş API işlemi
OSS SDK for Go V2, birden çok API çağrısında otomatik sayfalama yapan bir sayfalandırıcı sağlar.
Sayfalandırıcı nesnesi, <OperationName>Paginator adlandırma kuralını kullanır ve New<OperationName>Paginator ile oluşturulur. HasNext ve NextPage yöntemlerini uygular. HasNext kalan sayfaları kontrol eder ve NextPage bir sonraki sayfayı getirir.
API ayrıntıları:
type ListObjectsV2Paginator struct
func (p *ListObjectsV2Paginator) HasNext() bool
func (p *ListObjectsV2Paginator) NextPage(ctx context.Context, optFns ...func(*Options)) (*ListObjectsV2Result, error)
func (c *Client) NewListObjectsV2Paginator(request *ListObjectsV2Request, optFns ...func(*PaginatorOptions)) *ListObjectsV2Paginator
İstek parametreleri
|
|
|
|
|
|
|
|
|
|
|
|
ListObjectsV2 ortak parametreleri:
|
Parametre |
Açıklama |
|
prefix |
Döndürülen nesne adlarının içermesi gereken ön ek. |
|
maxKeys |
Her seferinde döndürülen maksimum nesne sayısı. |
|
delimiter |
Nesneleri ada göre gruplamak için kullanılan karakter. Belirtilen ön ekle ilk ayırıcıya kadar aynı dizeye sahip nesneler CommonPrefixes öğesi olarak gruplanır. |
|
startAfter |
Listeleme işleminin başladığı konum. |
|
fetchOwner |
Sahip bilgilerinin yanıtta dahil edilip edilmeyeceği.
|
Yanıt parametreleri
|
|
|
|
|
|
Nesneleri listelemeye yönelik temel API işlemi
func (c *Client) ListObjectsV2(ctx context.Context, request *ListObjectsV2Request, optFns ...func(*Options)) (*ListObjectsV2Result, error)
İstek parametreleri
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Yanıt parametreleri
|
|
|
|
|
|
|
|
|
|
|
|
Örnek kod
Gelişmiş API işlemini kullanarak nesneleri listeleme
Sayfalandırıcıyı kullanarak bir paket içindeki tüm nesneleri listeleyin.
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"
)
// Define global variables.
var (
region string // Region in which the bucket is located.
bucketName string // Name of the bucket.
)
// Specify the init function used to initialize command line parameters.
func init() {
flag.StringVar(®ion, "region", "", "The region in which the bucket is located.")
flag.StringVar(&bucketName, "bucket", "", "The `name` of the bucket.")
}
func main() {
// Parse command line parameters.
flag.Parse()
// Check whether the name of the bucket is specified.
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, bucket name required")
}
// Check whether the region is specified.
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required")
}
// Load the default configurations and specify the credential provider and region.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// Create an OSS client.
client := oss.NewClient(cfg)
// Create a request to list objects.
request := &oss.ListObjectsV2Request{
Bucket: oss.Ptr(bucketName),
}
// Create a paginator.
p := client.NewListObjectsV2Paginator(request)
// Initialize the page number counter.
var i int
log.Println("Objects:")
// Traverse each page in the paginator.
for p.HasNext() {
i++
// Obtain the data on the next page.
page, err := p.NextPage(context.TODO())
if err != nil {
log.Fatalf("failed to get page %v, %v", i, err)
}
// Display information about each object on the page.
for _, obj := range page.Contents {
log.Printf("Object:%v, %v, %v\n", oss.ToString(obj.Key), obj.Size, oss.ToTime(obj.LastModified))
}
}
}
Temel API işlemini kullanarak nesneleri listeleme
ListObjectsV2 çağırarak bir paket içindeki tüm nesneleri listeleyin.
package main
import (
"context"
"flag"
"log"
"time"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
// Define global variables.
var (
region string // Region in which the bucket is located.
bucketName string // Name of the bucket.
)
// Specify the init function used to initialize command line parameters.
func init() {
flag.StringVar(®ion, "region", "", "The region in which the bucket is located.")
flag.StringVar(&bucketName, "bucket", "", "The `name` of the bucket.")
}
func main() {
flag.Parse() // Parse command line parameters.
// Check whether the name of the bucket is specified.
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, bucket name required")
}
// Check whether the region is specified.
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required")
}
// Load the default configurations and specify the credential provider and region.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// Create an OSS client.
client := oss.NewClient(cfg)
// Create a ListObjectsV2 request.
request := &oss.ListObjectsV2Request{
Bucket: oss.Ptr(bucketName),
}
for {
// Perform the operation to list all objects.
lsRes, err := client.ListObjectsV2(context.TODO(), request)
if err != nil {
log.Fatalf("Failed to list objects: %v", err)
}
// Display the results.
for _, object := range lsRes.Contents {
log.Printf("Object Key: %s, Type: %s, Size: %d, ETag: %s, LastModified: %s, StorageClass: %s\n",
*object.Key, *object.Type, object.Size, *object.ETag, object.LastModified.Format(time.RFC3339), *object.StorageClass)
}
// If there are more objects to list, update the value of the continueToken parameter to obtain the remaining results.
if lsRes.IsTruncated {
request.ContinuationToken = lsRes.NextContinuationToken
} else {
break // End the cycle if there are no more objects.
}
}
log.Println("All objects have been listed.")
}
Ortak senaryolar
Bir dizindeki tüm nesneleri listeleme
Sayfalandırıcıyı kullanma
Prefix parametresini kullanarak belirtilen bir dizindeki tüm nesneleri listeler.
package main
import (
"context"
"flag"
"fmt"
"log"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
// Define global variables.
var (
region string // Region in which the bucket is located.
bucketName string // Name of the bucket.
)
// Specify the init function used to initialize command line parameters.
func init() {
flag.StringVar(®ion, "region", "", "The region in which the bucket is located.")
flag.StringVar(&bucketName, "bucket", "", "The `name` of the bucket.")
}
func main() {
// Parse command line parameters.
flag.Parse()
// Check whether the name of the bucket is specified.
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, bucket name required")
}
// Check whether the region is specified.
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required")
}
// Load the default configurations and specify the credential provider and region.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// Create an OSS client.
client := oss.NewClient(cfg)
// Create a request to list objects.
request := &oss.ListObjectsV2Request{
Bucket: oss.Ptr(bucketName),
Prefix: oss.Ptr("exampledir/"), // List all objects in the specified directory
}
// Create a paginator.
p := client.NewListObjectsV2Paginator(request)
// Initialize the page number counter.
var i int
log.Println("Objects:")
// Traverse each page in the paginator.
for p.HasNext() {
i++
fmt.Printf("Page %v\n", i)
// Obtain the data on the next page.
page, err := p.NextPage(context.TODO())
if err != nil {
log.Fatalf("failed to get page %v, %v", i, err)
}
// Print the continuation token.
log.Printf("ContinuationToken:%v\n", oss.ToString(page.ContinuationToken))
// Display information about each object on the page.
for _, obj := range page.Contents {
log.Printf("Object:%v, %v, %v\n", oss.ToString(obj.Key), obj.Size, oss.ToTime(obj.LastModified))
}
}
}
ListObjectsV2'yi kullanma
Prefix parametresini kullanarak belirtilen bir dizindeki tüm nesneleri listeler.
package main
import (
"context"
"flag"
"log"
"time"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
// Define global variables.
var (
region string // Region in which the bucket is located.
bucketName string // Name of the bucket.
)
// Specify the init function used to initialize command line parameters.
func init() {
flag.StringVar(®ion, "region", "", "The region in which the bucket is located.")
flag.StringVar(&bucketName, "bucket", "", "The `name` of the bucket.")
}
func main() {
flag.Parse() // Parse command line parameters.
// Check whether the name of the bucket is specified.
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, bucket name required")
}
// Check whether the region is specified.
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required")
}
// Load the default configurations and specify the credential provider and region.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// Create an OSS client.
client := oss.NewClient(cfg)
// Create a ListObjectsV2 request.
request := &oss.ListObjectsV2Request{
Bucket: oss.Ptr(bucketName),
Prefix: oss.Ptr("exampledir/"), // List all objects in the specified directory.
}
for {
lsRes, err := client.ListObjectsV2(context.TODO(), request)
if err != nil {
log.Fatalf("Failed to list objects: %v", err)
}
// Display the results.
for _, object := range lsRes.Contents {
log.Printf("Object Key: %s, Type: %s, Size: %d, ETag: %s, LastModified: %s, StorageClass: %s\n",
*object.Key, *object.Type, object.Size, *object.ETag, object.LastModified.Format(time.RFC3339), *object.StorageClass)
}
// If there are more objects to list, update the value of the continueToken parameter to obtain the remaining results.
if lsRes.IsTruncated {
request.ContinuationToken = lsRes.NextContinuationToken
} else {
break // End the cycle if there are no more objects.
}
}
log.Println("All objects have been listed.")
}
Adları belirtilen ön eki içeren nesneleri listeleme
Sayfalandırıcıyı kullanma
Adları belirtilen ön ekle eşleşen tüm nesneleri listeler.
package main
import (
"context"
"flag"
"fmt"
"log"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
// Define global variables.
var (
region string // Region in which the bucket is located.
bucketName string // Name of the bucket.
)
// Specify the init function used to initialize command line parameters.
func init() {
flag.StringVar(®ion, "region", "", "The region in which the bucket is located.")
flag.StringVar(&bucketName, "bucket", "", "The `name` of the bucket.")
}
func main() {
// Parse command line parameters.
flag.Parse()
// Check whether the name of the bucket is specified.
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, bucket name required")
}
// Check whether the region is specified.
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required")
}
// Load the default configurations and specify the credential provider and region.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// Create an OSS client.
client := oss.NewClient(cfg)
// Create a request to list objects.
request := &oss.ListObjectsV2Request{
Bucket: oss.Ptr(bucketName),
Prefix: oss.Ptr("my-object-"), // List all objects whose names contain the specified prefix.
}
// Create a paginator.
p := client.NewListObjectsV2Paginator(request)
// Initialize the page number counter.
var i int
log.Println("Objects:")
// Traverse each page in the paginator.
for p.HasNext() {
i++
fmt.Printf("Page %v\n", i)
// Obtain the data on the next page.
page, err := p.NextPage(context.TODO())
if err != nil {
log.Fatalf("failed to get page %v, %v", i, err)
}
// Print the continuation token.
log.Printf("ContinuationToken:%v\n", oss.ToString(page.ContinuationToken))
// Display information about each object on the page.
for _, obj := range page.Contents {
log.Printf("Object:%v, %v, %v\n", oss.ToString(obj.Key), obj.Size, oss.ToTime(obj.LastModified))
}
}
}
ListObjectsV2'yi kullanma
Adları belirtilen ön ekle eşleşen tüm nesneleri listeler.
package main
import (
"context"
"flag"
"log"
"time"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
// Define global variables.
var (
region string // Region in which the bucket is located.
bucketName string // Name of the bucket.
)
// Specify the init function used to initialize command line parameters.
func init() {
flag.StringVar(®ion, "region", "", "The region in which the bucket is located.")
flag.StringVar(&bucketName, "bucket", "", "The `name` of the bucket.")
}
func main() {
flag.Parse() // Parse command line parameters.
// Check whether the name of the bucket is specified.
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, bucket name required")
}
// Check whether the region is specified.
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required")
}
// Load the default configurations and specify the credential provider and region.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// Create an OSS client.
client := oss.NewClient(cfg)
// Create a ListObjectsV2 request.
request := &oss.ListObjectsV2Request{
Bucket: oss.Ptr(bucketName),
Prefix: oss.Ptr("my-object-"),
}
for {
lsRes, err := client.ListObjectsV2(context.TODO(), request)
if err != nil {
log.Fatalf("Failed to list objects: %v", err)
}
// Display the results.
for _, object := range lsRes.Contents {
log.Printf("Object Key: %s, Type: %s, Size: %d, ETag: %s, LastModified: %s, StorageClass: %s\n",
*object.Key, *object.Type, object.Size, *object.ETag, object.LastModified.Format(time.RFC3339), *object.StorageClass)
}
// If there are more objects to list, update the value of the continueToken parameter to obtain the remaining results.
if lsRes.IsTruncated {
request.ContinuationToken = lsRes.NextContinuationToken
} else {
break // End the cycle if there are no more objects.
}
}
log.Println("All objects have been listed.")
}
Belirli sayıda nesneyi listeleme
Sayfalandırıcıyı kullanma
MaxKeys parametresini kullanarak belirli sayıda nesneyi listeler.
package main
import (
"context"
"flag"
"fmt"
"log"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
// Define global variables.
var (
region string // Region in which the bucket is located.
bucketName string // Name of the bucket.
)
// Specify the init function used to initialize command line parameters.
func init() {
flag.StringVar(®ion, "region", "", "The region in which the bucket is located.")
flag.StringVar(&bucketName, "bucket", "", "The `name` of the bucket.")
}
func main() {
// Parse command line parameters.
flag.Parse()
// Check whether the name of the bucket is specified.
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, bucket name required")
}
// Check whether the region is specified.
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required")
}
// Load the default configurations and specify the credential provider and region.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// Create an OSS client.
client := oss.NewClient(cfg)
// Create a request to list objects.
request := &oss.ListObjectsV2Request{
Bucket: oss.Ptr(bucketName),
MaxKeys: 10, // The maximum number of objects returned each time.
}
// Create a paginator.
p := client.NewListObjectsV2Paginator(request)
// Initialize the page number counter.
var i int
log.Println("Objects:")
// Traverse each page in the paginator.
for p.HasNext() {
i++
fmt.Printf("Page %v\n", i)
// Obtain the data on the next page.
page, err := p.NextPage(context.TODO())
if err != nil {
log.Fatalf("failed to get page %v, %v", i, err)
}
// Print the continuation token.
log.Printf("ContinuationToken:%v\n", oss.ToString(page.ContinuationToken))
// Display information about each object on the page.
for _, obj := range page.Contents {
log.Printf("Object:%v, %v, %v\n", oss.ToString(obj.Key), obj.Size, oss.ToTime(obj.LastModified))
}
}
}
ListObjectsV2'yi kullanma
MaxKeys parametresini kullanarak belirli sayıda nesneyi listeler.
package main
import (
"context"
"flag"
"log"
"time"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
// Define global variables.
var (
region string // Region in which the bucket is located.
bucketName string // Name of the bucket.
)
// Specify the init function used to initialize command line parameters.
func init() {
flag.StringVar(®ion, "region", "", "The region in which the bucket is located.")
flag.StringVar(&bucketName, "bucket", "", "The `name` of the bucket.")
}
func main() {
flag.Parse() // Parse command line parameters.
// Check whether the name of the bucket is specified.
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, bucket name required")
}
// Check whether the region is specified.
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required")
}
// Load the default configurations and specify the credential provider and region.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// Create an OSS client.
client := oss.NewClient(cfg)
// Create a ListObjectsV2 request.
request := &oss.ListObjectsV2Request{
Bucket: oss.Ptr(bucketName),
MaxKeys: 10, // The maximum number of objects returned each time.
}
for {
lsRes, err := client.ListObjectsV2(context.TODO(), request)
if err != nil {
log.Fatalf("Failed to list objects: %v", err)
}
// Display the results.
for _, object := range lsRes.Contents {
log.Printf("Object Key: %s, Type: %s, Size: %d, ETag: %s, LastModified: %s, StorageClass: %s\n",
*object.Key, *object.Type, object.Size, *object.ETag, object.LastModified.Format(time.RFC3339), *object.StorageClass)
}
// If there are more objects to list, update the value of the continueToken parameter to obtain the remaining results.
if lsRes.IsTruncated {
request.ContinuationToken = lsRes.NextContinuationToken
} else {
break // End the cycle if there are no more objects.
}
}
log.Println("All objects have been listed.")
}
Belirli bir konumdan başlayarak tüm nesneleri listeleme
Sayfalandırıcıyı kullanma
StartAfter parametresini kullanarak belirtilen bir konumdan sonra başlayan nesneleri listeler.
package main
import (
"context"
"flag"
"fmt"
"log"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
// Define global variables.
var (
region string // Region in which the bucket is located.
bucketName string // Name of the bucket.
)
// Specify the init function used to initialize command line parameters.
func init() {
flag.StringVar(®ion, "region", "", "The region in which the bucket is located.")
flag.StringVar(&bucketName, "bucket", "", "The `name` of the bucket.")
}
func main() {
// Parse command line parameters.
flag.Parse()
// Check whether the name of the bucket is specified.
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, bucket name required")
}
// Check whether the region is specified.
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required")
}
// Load the default configurations and specify the credential provider and region.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// Create an OSS client.
client := oss.NewClient(cfg)
// Create a request to list objects.
request := &oss.ListObjectsV2Request{
Bucket: oss.Ptr(bucketName),
StartAfter: oss.Ptr("my-object"), // Specify the starting position for listing objects
}
// Create a paginator.
p := client.NewListObjectsV2Paginator(request)
// Initialize the page number counter.
var i int
log.Println("Objects:")
// Traverse each page in the paginator.
for p.HasNext() {
i++
fmt.Printf("Page %v\n", i)
// Obtain the data on the next page.
page, err := p.NextPage(context.TODO())
if err != nil {
log.Fatalf("failed to get page %v, %v", i, err)
}
// Print the continuation token.
log.Printf("ContinuationToken:%v\n", oss.ToString(page.ContinuationToken))
// Display information about each object on the page.
for _, obj := range page.Contents {
log.Printf("Object:%v, %v, %v\n", oss.ToString(obj.Key), obj.Size, oss.ToTime(obj.LastModified))
}
}
}
ListObjectsV2'yi kullanma
StartAfter parametresini kullanarak belirtilen bir konumdan sonra başlayan nesneleri listeler.
package main
import (
"context"
"flag"
"log"
"time"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
// Define global variables.
var (
region string // Region in which the bucket is located.
bucketName string // Name of the bucket.
)
// Specify the init function used to initialize command line parameters.
func init() {
flag.StringVar(®ion, "region", "", "The region in which the bucket is located.")
flag.StringVar(&bucketName, "bucket", "", "The `name` of the bucket.")
}
func main() {
flag.Parse() // Parse command line parameters.
// Check whether the name of the bucket is specified.
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, bucket name required")
}
// Check whether the region is specified.
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required")
}
// Load the default configurations and specify the credential provider and region.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// Create an OSS client.
client := oss.NewClient(cfg)
// Create a ListObjectsV2 request.
request := &oss.ListObjectsV2Request{
Bucket: oss.Ptr(bucketName),
StartAfter: oss.Ptr("my-object"), // Specify the starting position for listing objects.
}
for {
lsRes, err := client.ListObjectsV2(context.TODO(), request)
if err != nil {
log.Fatalf("Failed to list objects: %v", err)
}
// Display the results.
for _, object := range lsRes.Contents {
log.Printf("Object Key: %s, Type: %s, Size: %d, ETag: %s, LastModified: %s, StorageClass: %s\n",
*object.Key, *object.Type, object.Size, *object.ETag, object.LastModified.Format(time.RFC3339), *object.StorageClass)
}
// If there are more objects to list, update the value of the continueToken parameter to obtain the remaining results.
if lsRes.IsTruncated {
request.ContinuationToken = lsRes.NextContinuationToken
} else {
break // End the cycle if there are no more objects.
}
}
log.Println("All objects have been listed.")
}
Kök dizindeki tüm nesneleri listeleme
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"
)
// Define global variables.
var (
region string // The region.
bucketName string // The bucket name.
)
// Specify the init function used to initialize command line parameters.
func init() {
flag.StringVar(®ion, "region", "", "The region in which the bucket is located.")
flag.StringVar(&bucketName, "bucket", "", "The `name` of the bucket.")
}
func main() {
flag.Parse() // Parse the command-line parameters.
// Check whether the bucket name is specified.
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, bucket name required")
}
// Check whether the region is specified.
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required")
}
// Load the default configurations and specify the credential provider and region.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// Create an OSSClient instance.
client := oss.NewClient(cfg)
// Create a ListObjectsV2 request, and set the delimiter to a forward slash (/).
request := &oss.ListObjectsV2Request{
Bucket: oss.Ptr(bucketName),
Delimiter: oss.Ptr("/"), // Use forward slashes (/) as delimiters.
MaxKeys: 100, // The maximum number of objects returned per request.
}
// Variable to store all subdirectories (CommonPrefixes).
var subdirectories []oss.CommonPrefix
for {
lsRes, err := client.ListObjectsV2(context.TODO(), request)
if err != nil {
log.Fatalf("Failed to list objects: %v", err)
}
// Log and collect subdirectories (CommonPrefixes).
for _, prefix := range lsRes.CommonPrefixes {
log.Printf("Subdirectory: %v\n", *prefix.Prefix)
subdirectories = append(subdirectories, prefix)
}
// If there are more objects to list, update the value of the continueToken parameter to obtain the remaining results.
if lsRes.IsTruncated {
request.ContinuationToken = lsRes.NextContinuationToken
} else {
break // End the cycle if there are no more objects.
}
}
log.Println("All subdirectories have been listed.")
log.Printf("Total subdirectories: %d\n", len(subdirectories))
}
Başvurular
Tam örnek kod: GitHub.
Gelişmiş API işlemi: NewListObjectsV2Paginator.
Temel API işlemi: ListObjectsV2.
Sayfalandırıcı ayrıntıları: Geliştirici Kılavuzu.