github.com/aliyun/aliyun-oss-go-sdk@v3.0.2+incompatible/sample/object_meta.go (about) 1 package sample 2 3 import ( 4 "fmt" 5 "strings" 6 7 "github.com/aliyun/aliyun-oss-go-sdk/oss" 8 ) 9 10 // ObjectMetaSample shows how to get and set the object metadata 11 func ObjectMetaSample() { 12 // Create bucket 13 bucket, err := GetTestBucket(bucketName) 14 if err != nil { 15 HandleError(err) 16 } 17 18 // Delete object 19 err = bucket.PutObject(objectKey, strings.NewReader("YoursObjectValue")) 20 if err != nil { 21 HandleError(err) 22 } 23 24 // Case 0: Set bucket meta. one or more properties could be set 25 // Note: Meta is case insensitive 26 options := []oss.Option{ 27 oss.Expires(futureDate), 28 oss.Meta("myprop", "mypropval")} 29 err = bucket.SetObjectMeta(objectKey, options...) 30 if err != nil { 31 HandleError(err) 32 } 33 34 // Case 1: Get the object metadata. Only return basic meta information includes ETag, size and last modified. 35 props, err := bucket.GetObjectMeta(objectKey) 36 if err != nil { 37 HandleError(err) 38 } 39 fmt.Println("Object Meta:", props) 40 41 // Case 2: Get all the detailed object meta including custom meta 42 props, err = bucket.GetObjectDetailedMeta(objectKey) 43 if err != nil { 44 HandleError(err) 45 } 46 fmt.Println("Expires:", props.Get("Expires")) 47 48 // Case 3: Get the object's all metadata with contraints. When constraints are met, return the metadata. 49 props, err = bucket.GetObjectDetailedMeta(objectKey, oss.IfUnmodifiedSince(futureDate)) 50 if err != nil { 51 HandleError(err) 52 } 53 fmt.Println("MyProp:", props.Get("X-Oss-Meta-Myprop")) 54 55 _, err = bucket.GetObjectDetailedMeta(objectKey, oss.IfModifiedSince(futureDate)) 56 if err == nil { 57 HandleError(err) 58 } 59 60 goar, err := bucket.GetObjectACL(objectKey) 61 if err != nil { 62 HandleError(err) 63 } 64 fmt.Println("Object ACL:", goar.ACL) 65 66 // Delete object and bucket 67 err = DeleteTestBucketAndObject(bucketName) 68 if err != nil { 69 HandleError(err) 70 } 71 72 fmt.Println("ObjectMetaSample completed") 73 }