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  }