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