文档中心 > 限制下载
限制下载

最近更新时间:2021-11-19

本文介绍如何按照限制条件下载对象存储文件。

参数说明如下。

参数

描述

IfModifiedSince

如果在指定的时间之后对象文件有修改,正常下载文件,否则报错(304 Not Modified)

IfUnmodifiedSince

如果在指定的时间之后对象存储没有修改,正常下载文件,否则报错(412 Precondition Failed)

IfMatch

如果在指定Etag和对象文件的Etag匹配,正常下载文件,否则报错(412   Precondition Failed)

IfNoneMatch

如果在指定Etag和对象文件的Etag不匹配,正常下载文件,否则报错(304 Not   Modified)

 

以下代码用于把满足指定条件的对象存储文件下载到本地:

func GetObjectWithCondition() {
    DeleteTestBucketAndObject()
    defer DeleteTestBucketAndObject()
    sc := s3lib.NewS3(endpoint, accessKey, secretKey)
    // Create a bucket
    err := sc.MakeBucket(bucketName)
    if err != nil {
        HandleError(err)
    }
 
    // Put a file
    f, err := os.Open(localFilePath)
    defer f.Close()
    if err != nil {
        HandleError(err)
    }
    err = sc.PutObject(bucketName, objectKey, f)
    if err != nil {
        HandleError(err)
    }
 
    date1 := time.Date(2021, time.November, 10, 16, 0, 0, 0, time.Local)
    data2 := time.Date(2021, time.November, 15, 16, 0, 0, 0, time.Local)
    params := &s3.GetObjectInput{
        Bucket:            aws.String(bucketName),
        Key:               aws.String(objectKey),
        IfModifiedSince:   aws.Time(data2),
        IfUnmodifiedSince: aws.Time(date1),
        //IfMatch:     aws.String("etag"),
        //IfNoneMatch: aws.String("etag"),
    }
    _, err = sc.Client.GetObject(params)
    if err != nil {
        HandleError(err)
    }
 
    fmt.Printf("GetObjectWithConditionSample Run Success !\n\n")
}