文件元信息(Object Meta)包括HTTP header和自定义元信息。本文介绍如何设置、修改和获取文件元信息。
有关文件元信息(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) }