package sample import ( "bytes" "fmt" "os" "strings" "github.com/aliyun/aliyun-oss-go-sdk/oss" ) // PutObjectSample Put Object Sample func PutObjectSample() { // 创建Bucket bucket, err := GetTestBucket(bucketName) if err != nil { HandleError(err) } var val = "花间一壶酒,独酌无相亲。 举杯邀明月,对影成三人。" // 场景1:上传object,value是字符串 err = bucket.PutObject(objectKey, strings.NewReader(val)) if err != nil { HandleError(err) } // 场景2:上传object,value是[]byte err = bucket.PutObject(objectKey, bytes.NewReader([]byte(val))) if err != nil { HandleError(err) } // 场景3:上传本地文件,您自己打开文件,传入句柄 fd, err := os.Open(localFile) if err != nil { HandleError(err) } defer fd.Close() err = bucket.PutObject(objectKey, fd) if err != nil { HandleError(err) } // 场景4:上传object,上传时指定对象属性 options := []oss.Option{ oss.Expires(futureDate), oss.ObjectACL(oss.ACLPublicRead), oss.Meta("myprop", "mypropval"), } err = bucket.PutObject(objectKey, strings.NewReader(val), options...) if err != nil { HandleError(err) } props, err := bucket.GetObjectDetailedMeta(objectKey) if err != nil { HandleError(err) } fmt.Println("Object Meta:", props) // 场景5:上传本地文件 err = bucket.PutObjectFromFile(objectKey, localFile) if err != nil { HandleError(err) } // 场景6:上传本地文件,上传时指定对象属性 options = []oss.Option{ oss.Expires(futureDate), oss.ObjectACL(oss.ACLPublicRead), oss.Meta("myprop", "mypropval"), } err = bucket.PutObjectFromFile(objectKey, localFile, options...) if err != nil { HandleError(err) } props, err = bucket.GetObjectDetailedMeta(objectKey) if err != nil { HandleError(err) } fmt.Println("Object Meta:", props) // 删除object和bucket err = DeleteTestBucketAndObject(bucketName) if err != nil { HandleError(err) } fmt.Println("PutObjectSample completed") }