文件元信息(Object Meta)详情请参见开发指南中的文件元信息。文件元信息的完整代码请参见GitHub。
设置文件元信息
您可以在上传文件时设置文件元信息。可设置的文件元信息如下:
参数 | 说明 |
---|---|
CacheControl | 指定该文件被下载时的网页的缓存行为。 |
ContentDisposition | 指定该文件被下载时的名称。 |
ContentEncoding | 指定该文件被下载时的内容编码格式。 |
Expires | 设置缓存过期时间,格式是格林威治时间(GMT)。 |
ServerSideEncryption | 指定OSS创建文件时的服务器端加密编码算法。有效值:AES256。 |
ObjectACL | 指定OSS创建的文件的访问权限。 |
Meta | 自定义元信息,以X-Oss-Meta- 为前缀的参数。 |
以下代码用于设置文件元信息:
package main
import (
"fmt"
"os"
"time"
"strings"
"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)
}
// 设置文件元信息:过期时间为2049年1月10日 23:00:00 GMT,访问权限为公共读,自定义元信息为MyProp(取值MyPropVal)
expires := time.Date(2049, time.January, 10, 23, 0, 0, 0, time.UTC)
options := []oss.Option{
oss.Expires(expires),
oss.ObjectACL(oss.ACLPublicRead),
oss.Meta("MyProp", "MyPropVal"),
}
// 使用数据流上传文件。
err = bucket.PutObject("<yourObjectName>", strings.NewReader("MyObjectValue"), options...)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// 获取文件元信息。
props, err := bucket.GetObjectDetailedMeta("<yourObjectName>")
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
fmt.Println("Object Meta:", props)
}
修改文件元信息
您可以一次修改一条或多条元信息,代码如下:
package main
import (
"fmt"
"os"
"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)
}
bucketName := "<yourBucketName>"
objectName := "<yourObjectName>"
// 获取存储空间。
bucket, err := client.Bucket(bucketName)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// 一次修改一条元信息。
err = bucket.SetObjectMeta(objectName, oss.Meta("MyMeta", "MyMetaValue1"))
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// 一次修改多条元信息。
options := []oss.Option{
oss.Meta("MyMeta", "MyMetaValue2"),
oss.Meta("MyObjectLocation", "HangZhou"),
}
err = bucket.SetObjectMeta(objectName, options...)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// 获取文件元信息。
props, err := bucket.GetObjectDetailedMeta(objectName)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
fmt.Println("Object Meta:", props)
}
获取文件元信息
以下代码用于获取文件元信息:
package main
import (
"fmt"
"os"
"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)
}
bucketName := "<yourBucketName>"
objectName := "<yourObjectName>"
// 获取存储空间。
bucket, err := client.Bucket(bucketName)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// 获取文件元信息。
props, err := bucket.GetObjectDetailedMeta(objectName)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
fmt.Println("Object Meta:", props)
}