文档首页 > > SDK参考> Go> 下载对象> 限定条件下载

限定条件下载

分享
更新时间: 2019/12/23 GMT+08:00

下载对象时,可以指定一个或多个限定条件,满足限定条件时则进行下载,否则返回异常码,下载对象失败。

您可以使用的限定条件如下:

参数

作用

GetObjectInput.IfModifiedSince

如果对象的修改时间晚于该参数值指定的时间,则返回对象内容,否则返回异常码。

GetObjectInput.IfUnmodifiedSince

如果对象的修改时间早于该参数值指定的时间,则返回对象内容,否则返回异常码。

GetObjectInput.IfMatch

如果对象的ETag值与该参数值相同,则返回对象内容,否则返回异常码。

GetObjectInput.IfNoneMatch

如果对象的ETag值与该参数值不相同,则返回对象内容,否则返回异常码。

  • 对象的ETag值是指对象数据的MD5校验值。
  • 如果包含IfUnmodifiedSince并且不符合或者包含IfMatch并且不符合,则下载对象失败,返回异常码:412 precondition failed。
  • 如果包含IfModifiedSince并且不符合或者包含IfNoneMatch并且不符合,则下载对象失败,返回异常码:304 Not Modified。

以下代码展示了如何进行限定条件下载:

// 引入依赖包
import (
       "fmt"
       "obs"
       "time"
)

var ak = "*** Provide your Access Key ***"
var sk = "*** Provide your Secret Key ***"
var endpoint = "https://your-endpoint"

// 创建ObsClient结构体
var obsClient, _ = obs.New(ak, sk, endpoint)

func main() {
       input := &obs.GetObjectInput{}
       input.Bucket = "bucketname"
       input.Key = "objectname"

       format := "2006/01/02 15:04:05"
       t, _ := time.Parse(format, "2015/12/31 00:00:00")
       input.IfModifiedSince = t

       output, err := obsClient.GetObject(input)
       if err == nil {
              defer output.Body.Close()
              fmt.Printf("StorageClass:%s, ETag:%s, ContentType:%s, ContentLength:%d, LastModified:%s\n",
                     output.StorageClass, output.ETag, output.ContentType, output.ContentLength, output.LastModified)
       } else if obsError, ok := err.(obs.ObsError); ok {
              fmt.Printf("Code:%s\n", obsError.Code)
              fmt.Printf("Message:%s\n", obsError.Message)
       }
}
分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区