流式上传

更新时间: 2019-03-14 10:05

流式上传使用io.Reader作为对象的数据源。您可以通过ObsClient.PutObject上传您的数据流到OBS。以下代码展示了如何进行流式上传:

上传字符串

  1. // 引入依赖包
  2. import (
  3. "fmt"
  4. "obs"
  5. "strings"
  6. )
  7.  
  8. var ak = "*** Provide your Access Key ***"
  9. var sk = "*** Provide your Secret Key ***"
  10. var endpoint = "https://your-endpoint"
  11.  
  12. // 创建ObsClient结构体
  13. var obsClient, _ = obs.New(ak, sk, endpoint)
  14.  
  15. func main() {
  16. input := &obs.PutObjectInput{}
  17. input.Bucket = "bucketname"
  18. input.Key = "objectkey"
  19. input.Body = strings.NewReader("Hello OBS")
  20. output, err := obsClient.PutObject(input)
  21. if err == nil {
  22. fmt.Printf("RequestId:%s\n", output.RequestId)
  23. fmt.Printf("ETag:%s\n", output.ETag)
  24. } else if obsError, ok := err.(obs.ObsError); ok {
  25. fmt.Printf("Code:%s\n", obsError.Code)
  26. fmt.Printf("Message:%s\n", obsError.Message)
  27. }
  28. }

上传文件流

  1. // 引入依赖包
  2. import (
  3. "fmt"
  4. "obs"
  5. "os"
  6. )
  7.  
  8. var ak = "*** Provide your Access Key ***"
  9. var sk = "*** Provide your Secret Key ***"
  10. var endpoint = "https://your-endpoint"
  11.  
  12. // 创建ObsClient结构体
  13. var obsClient, _ = obs.New(ak, sk, endpoint)
  14.  
  15. func main() {
  16. input := &obs.PutObjectInput{}
  17. input.Bucket = "bucketname"
  18. input.Key = "objectkey"
  19. fd, _ := os.Open("localfile")
  20. input.Body = fd
  21. output, err := obsClient.PutObject(input)
  22. if err == nil {
  23. fmt.Printf("RequestId:%s\n", output.RequestId)
  24. fmt.Printf("ETag:%s\n", output.ETag)
  25. } else if obsError, ok := err.(obs.ObsError); ok {
  26. fmt.Printf("Code:%s\n", obsError.Code)
  27. fmt.Printf("Message:%s\n", obsError.Message)
  28. }
  29. }

流式上传 - 图1

  • 大文件上传建议使用分段上传
  • 上传内容大小不能超过5GB。

父主题:上传对象