更新时间:2022-02-10 GMT+08:00

下载对象

功能说明

下载指定桶中的对象。

方法定义

func (obsClient ObsClient) GetObject(input *GetObjectInput) (output *GetObjectOutput, err error)

使用带授权信息URL的方法定义

func (obsClient ObsClient) GetObjectWithSignedUrl(signedUrl string, actualSignedRequestHeaders http.Header) (output *GetObjectOutput, err error)

请求参数

参数名

类型

约束

input

*GetObjectInput

必选

返回结果

参数名

类型

output

*GetObjectOutput

err

error

代码样例

  • 下载对象:
    func main() {
           input := &obs.GetObjectInput{}
           input.Bucket = "bucketname"
           input.Key = "objectkey"
           output, err := obsClient.GetObject(input)
           if err == nil {
                  defer output.Body.Close()
                  fmt.Printf("RequestId:%s\n", output.RequestId)
                  fmt.Printf("StorageClass:%s, ETag:%s, ContentType:%s, ContentLength:%d, LastModified:%s\n",
                         output.StorageClass, output.ETag, output.ContentType, output.ContentLength, output.LastModified)
                  p := make([]byte, 1024)
                  var readErr error
                  var readCount int
                  for {
                         readCount, readErr = output.Body.Read(p)
                         if readCount > 0 {
                               fmt.Printf("%s", p[:readCount])
                         }
                         if readErr != nil {
                               break
                         }
                  }
           } else {
                  if obsError, ok := err.(obs.ObsError); ok {
                         fmt.Println(obsError.Code)
                         fmt.Println(obsError.Message)
                  } else {
                         fmt.Println(err)
                  }
           }
    }
  • 下载对象并保存到本地:
    func main() {
           input := &obs.GetObjectInput{}
           input.Bucket = "bucketname"
           input.Key = "objectkey"
           output, err := obsClient.GetObject(input)
           if err == nil {
                  defer output.Body.Close()
                  fmt.Printf("RequestId:%s\n", output.RequestId)
                  fmt.Printf("StorageClass:%s, ETag:%s, ContentType:%s, ContentLength:%d, LastModified:%s\n",
                         output.StorageClass, output.ETag, output.ContentType, output.ContentLength, output.LastModified)
                  p, err := ioutil.ReadAll(output.Body)
                  if err == nil {   
                      ioutil.WriteFile("***your file path***", p, os.ModeAppend);
                  }
    
           } else {
                  if obsError, ok := err.(obs.ObsError); ok {
                         fmt.Println(obsError.Code)
                         fmt.Println(obsError.Message)
                  } else {
                         fmt.Println(err)
                  }
           }
    }