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 }