github.com/aliyun/aliyun-oss-go-sdk@v3.0.2+incompatible/sample/list_objects.go (about)

     1  package sample
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/aliyun/aliyun-oss-go-sdk/oss"
     7  )
     8  
     9  // ListObjectsSample shows the file list, including default and specified parameters.
    10  func ListObjectsSample() {
    11  	var myObjects = []Object{
    12  		{"my-object-1", ""},
    13  		{"my-object-11", ""},
    14  		{"my-object-2", ""},
    15  		{"my-object-21", ""},
    16  		{"my-object-22", ""},
    17  		{"my-object-3", ""},
    18  		{"my-object-31", ""},
    19  		{"my-object-32", ""}}
    20  
    21  	// Create bucket
    22  	bucket, err := GetTestBucket(bucketName)
    23  	if err != nil {
    24  		HandleError(err)
    25  	}
    26  
    27  	// Create objects
    28  	err = CreateObjects(bucket, myObjects)
    29  	if err != nil {
    30  		HandleError(err)
    31  	}
    32  
    33  	// Case 1: Use default parameters
    34  	lor, err := bucket.ListObjects()
    35  	if err != nil {
    36  		HandleError(err)
    37  	}
    38  	fmt.Println("my objects:", getObjectsFormResponse(lor))
    39  
    40  	// Case 2: Specify max keys
    41  	lor, err = bucket.ListObjects(oss.MaxKeys(3))
    42  	if err != nil {
    43  		HandleError(err)
    44  	}
    45  	fmt.Println("my objects max num:", getObjectsFormResponse(lor))
    46  
    47  	// Case 3: Specify prefix of objects
    48  	lor, err = bucket.ListObjects(oss.Prefix("my-object-2"))
    49  	if err != nil {
    50  		HandleError(err)
    51  	}
    52  	fmt.Println("my objects prefix :", getObjectsFormResponse(lor))
    53  
    54  	// Case 4: Specify the marker
    55  	lor, err = bucket.ListObjects(oss.Marker("my-object-22"))
    56  	if err != nil {
    57  		HandleError(err)
    58  	}
    59  	fmt.Println("my objects marker :", getObjectsFormResponse(lor))
    60  
    61  	// Case 5: List object with paging. each page has 3 objects
    62  	marker := oss.Marker("")
    63  	for {
    64  		lor, err = bucket.ListObjects(oss.MaxKeys(3), marker)
    65  		if err != nil {
    66  			HandleError(err)
    67  		}
    68  		marker = oss.Marker(lor.NextMarker)
    69  		fmt.Println("my objects page :", getObjectsFormResponse(lor))
    70  		if !lor.IsTruncated {
    71  			break
    72  		}
    73  	}
    74  
    75  	// Case 6: List object with paging , marker and max keys; return 3 items each time.
    76  	marker = oss.Marker("my-object-22")
    77  	for {
    78  		lor, err = bucket.ListObjects(oss.MaxKeys(3), marker)
    79  		if err != nil {
    80  			HandleError(err)
    81  		}
    82  		marker = oss.Marker(lor.NextMarker)
    83  		fmt.Println("my objects marker&page :", getObjectsFormResponse(lor))
    84  		if !lor.IsTruncated {
    85  			break
    86  		}
    87  	}
    88  
    89  	// Case 7: List object with paging , with prefix and max keys; return 2 items each time.
    90  	pre := oss.Prefix("my-object-2")
    91  	marker = oss.Marker("")
    92  	for {
    93  		lor, err = bucket.ListObjects(oss.MaxKeys(2), marker, pre)
    94  		if err != nil {
    95  			HandleError(err)
    96  		}
    97  		pre = oss.Prefix(lor.Prefix)
    98  		marker = oss.Marker(lor.NextMarker)
    99  		fmt.Println("my objects prefix&page :", getObjectsFormResponse(lor))
   100  		if !lor.IsTruncated {
   101  			break
   102  		}
   103  	}
   104  
   105  	err = DeleteObjects(bucket, myObjects)
   106  	if err != nil {
   107  		HandleError(err)
   108  	}
   109  
   110  	// Case 8: Combine the prefix and delimiter for grouping. ListObjectsResponse.Objects is the objects returned.
   111  	// ListObjectsResponse.CommonPrefixes is the common prefixes returned.
   112  	myObjects = []Object{
   113  		{"fun/test.txt", ""},
   114  		{"fun/test.jpg", ""},
   115  		{"fun/movie/001.avi", ""},
   116  		{"fun/movie/007.avi", ""},
   117  		{"fun/music/001.mp3", ""},
   118  		{"fun/music/001.mp3", ""}}
   119  
   120  	// Create object
   121  	err = CreateObjects(bucket, myObjects)
   122  	if err != nil {
   123  		HandleError(err)
   124  	}
   125  
   126  	lor, err = bucket.ListObjects(oss.Prefix("fun/"), oss.Delimiter("/"))
   127  	if err != nil {
   128  		HandleError(err)
   129  	}
   130  	fmt.Println("my objects prefix :", getObjectsFormResponse(lor),
   131  		"common prefixes:", lor.CommonPrefixes)
   132  
   133  	// Delete object and bucket
   134  	err = DeleteTestBucketAndObject(bucketName)
   135  	if err != nil {
   136  		HandleError(err)
   137  	}
   138  
   139  	fmt.Println("ListObjectsSample completed")
   140  }
   141  
   142  func getObjectsFormResponse(lor oss.ListObjectsResult) string {
   143  	var output string
   144  	for _, object := range lor.Objects {
   145  		output += object.Key + "  "
   146  	}
   147  	return output
   148  }