限定条件下载
本文介绍如何使用限定条件下载OSS文件。
下载文件时,可以指定一个或多个限定条件。满足限定条件则下载,不满足则返回错误,不下载。可以使用的限定条件如下:
参数 | 描述 | 如何设置 |
---|---|---|
IfModifiedSince | 如果指定的时间早于实际修改时间,则正常传输文件,否则返回错误(304 Not modified)。 | oss.IfModifiedSince |
IfUnmodifiedSince | 如果指定的时间等于或者晚于文件实际修改时间,则正常传输文件,否则返回错误(412 Precondition failed)。 | oss.IfUnmodifiedSince |
IfMatch | 如果指定的ETag和OSS文件的ETag匹配,则正常传输文件,否则返回错误(412 Precondition failed)。 | oss.IfMatch |
IfNoneMatch | 如果指定的ETag和OSS文件的ETag不匹配,则正常传输文件,否则返回错误(304 Not modified)。 | oss.IfNoneMatch |
IfModifiedSince和IfUnmodifiedSince可以同时存在。IfMatch和IfNoneMatch可以同时存在。
ETag可以通过Bucket.GetObjectDetailedMeta方法获取。
package main
import (
"fmt"
"os"
"time"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// 创建OSSClient实例。
client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// 获取存储空间。
bucket, err := client.Bucket("<yourBucketName>")
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// 设置时间限定条件。
date := time.Date(2015, time.November, 10, 23, 0, 0, 0, time.UTC)
// 限定条件不满足,不下载文件。
err = bucket.GetObjectToFile("<yourObjectName>", "LocalFile", oss.IfModifiedSince(date))
if err == nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// 满足限定条件,下载文件。
err = bucket.GetObjectToFile("<yourObjectName>", "LocalFile", oss.IfUnmodifiedSince(date))
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
}
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
评论