put_object.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package sample
  2. import (
  3. "bytes"
  4. "fmt"
  5. "os"
  6. "strings"
  7. "github.com/aliyun/aliyun-oss-go-sdk/oss"
  8. )
  9. // PutObjectSample Put Object Sample
  10. func PutObjectSample() {
  11. // 创建Bucket
  12. bucket, err := GetTestBucket(bucketName)
  13. if err != nil {
  14. HandleError(err)
  15. }
  16. var val = "花间一壶酒,独酌无相亲。 举杯邀明月,对影成三人。"
  17. // 场景1:上传object,value是字符串
  18. err = bucket.PutObject(objectKey, strings.NewReader(val))
  19. if err != nil {
  20. HandleError(err)
  21. }
  22. // 场景2:上传object,value是[]byte
  23. err = bucket.PutObject(objectKey, bytes.NewReader([]byte(val)))
  24. if err != nil {
  25. HandleError(err)
  26. }
  27. // 场景3:上传本地文件,您自己打开文件,传入句柄
  28. fd, err := os.Open(localFile)
  29. if err != nil {
  30. HandleError(err)
  31. }
  32. defer fd.Close()
  33. err = bucket.PutObject(objectKey, fd)
  34. if err != nil {
  35. HandleError(err)
  36. }
  37. // 场景4:上传object,上传时指定对象属性
  38. options := []oss.Option{
  39. oss.Expires(futureDate),
  40. oss.ObjectACL(oss.ACLPublicRead),
  41. oss.Meta("myprop", "mypropval"),
  42. }
  43. err = bucket.PutObject(objectKey, strings.NewReader(val), options...)
  44. if err != nil {
  45. HandleError(err)
  46. }
  47. props, err := bucket.GetObjectDetailedMeta(objectKey)
  48. if err != nil {
  49. HandleError(err)
  50. }
  51. fmt.Println("Object Meta:", props)
  52. // 场景5:上传本地文件
  53. err = bucket.PutObjectFromFile(objectKey, localFile)
  54. if err != nil {
  55. HandleError(err)
  56. }
  57. // 场景6:上传本地文件,上传时指定对象属性
  58. options = []oss.Option{
  59. oss.Expires(futureDate),
  60. oss.ObjectACL(oss.ACLPublicRead),
  61. oss.Meta("myprop", "mypropval"),
  62. }
  63. err = bucket.PutObjectFromFile(objectKey, localFile, options...)
  64. if err != nil {
  65. HandleError(err)
  66. }
  67. props, err = bucket.GetObjectDetailedMeta(objectKey)
  68. if err != nil {
  69. HandleError(err)
  70. }
  71. fmt.Println("Object Meta:", props)
  72. // 删除object和bucket
  73. err = DeleteTestBucketAndObject(bucketName)
  74. if err != nil {
  75. HandleError(err)
  76. }
  77. fmt.Println("PutObjectSample completed")
  78. }