文件元信息(Object Meta)详情请参见开发指南中的文件元信息。文件元信息的完整代码请参见GitHub

设置文件元信息

您可以在上传文件时设置文件元信息。可设置的文件元信息如下:

参数说明
CacheControl指定该文件被下载时的网页的缓存行为。
ContentDisposition指定该文件被下载时的名称。
ContentEncoding指定该文件被下载时的内容编码格式。
Expires设置缓存过期时间,格式是格林威治时间(GMT)。
ServerSideEncryption指定OSS创建文件时的服务器端加密编码算法。有效值:AES256。
ObjectACL指定OSS创建的文件的访问权限。
Meta自定义元信息,以X-Oss-Meta-为前缀的参数。

以下代码用于设置文件元信息:

  1. package main
  2. import (
  3. "fmt"
  4. "os"
  5. "time"
  6. "strings"
  7. "github.com/aliyun/aliyun-oss-go-sdk/oss"
  8. )
  9. func main() {
  10. // 创建OSSClient实例。
  11. client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
  12. if err != nil {
  13. fmt.Println("Error:", err)
  14. os.Exit(-1)
  15. }
  16. // 获取存储空间。
  17. bucket, err := client.Bucket("<yourBucketName>")
  18. if err != nil {
  19. fmt.Println("Error:", err)
  20. os.Exit(-1)
  21. }
  22. // 设置文件元信息:过期时间为2049年1月10日 23:00:00 GMT,访问权限为公共读,自定义元信息为MyProp(取值MyPropVal)
  23. expires := time.Date(2049, time.January, 10, 23, 0, 0, 0, time.UTC)
  24. options := []oss.Option{
  25. oss.Expires(expires),
  26. oss.ObjectACL(oss.ACLPublicRead),
  27. oss.Meta("MyProp", "MyPropVal"),
  28. }
  29. // 使用数据流上传文件。
  30. err = bucket.PutObject("<yourObjectName>", strings.NewReader("MyObjectValue"), options...)
  31. if err != nil {
  32. fmt.Println("Error:", err)
  33. os.Exit(-1)
  34. }
  35. // 获取文件元信息。
  36. props, err := bucket.GetObjectDetailedMeta("<yourObjectName>")
  37. if err != nil {
  38. fmt.Println("Error:", err)
  39. os.Exit(-1)
  40. }
  41. fmt.Println("Object Meta:", props)
  42. }

修改文件元信息

您可以一次修改一条或多条元信息,代码如下:

  1. package main
  2. import (
  3. "fmt"
  4. "os"
  5. "github.com/aliyun/aliyun-oss-go-sdk/oss"
  6. )
  7. func main() {
  8. // 创建OSSClient实例。
  9. client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
  10. if err != nil {
  11. fmt.Println("Error:", err)
  12. os.Exit(-1)
  13. }
  14. bucketName := "<yourBucketName>"
  15. objectName := "<yourObjectName>"
  16. // 获取存储空间。
  17. bucket, err := client.Bucket(bucketName)
  18. if err != nil {
  19. fmt.Println("Error:", err)
  20. os.Exit(-1)
  21. }
  22. // 一次修改一条元信息。
  23. err = bucket.SetObjectMeta(objectName, oss.Meta("MyMeta", "MyMetaValue1"))
  24. if err != nil {
  25. fmt.Println("Error:", err)
  26. os.Exit(-1)
  27. }
  28. // 一次修改多条元信息。
  29. options := []oss.Option{
  30. oss.Meta("MyMeta", "MyMetaValue2"),
  31. oss.Meta("MyObjectLocation", "HangZhou"),
  32. }
  33. err = bucket.SetObjectMeta(objectName, options...)
  34. if err != nil {
  35. fmt.Println("Error:", err)
  36. os.Exit(-1)
  37. }
  38. // 获取文件元信息。
  39. props, err := bucket.GetObjectDetailedMeta(objectName)
  40. if err != nil {
  41. fmt.Println("Error:", err)
  42. os.Exit(-1)
  43. }
  44. fmt.Println("Object Meta:", props)
  45. }

获取文件元信息

以下代码用于获取文件元信息:

  1. package main
  2. import (
  3. "fmt"
  4. "os"
  5. "github.com/aliyun/aliyun-oss-go-sdk/oss"
  6. )
  7. func main() {
  8. // 创建OSSClient实例。
  9. client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
  10. if err != nil {
  11. fmt.Println("Error:", err)
  12. os.Exit(-1)
  13. }
  14. bucketName := "<yourBucketName>"
  15. objectName := "<yourObjectName>"
  16. // 获取存储空间。
  17. bucket, err := client.Bucket(bucketName)
  18. if err != nil {
  19. fmt.Println("Error:", err)
  20. os.Exit(-1)
  21. }
  22. // 获取文件元信息。
  23. props, err := bucket.GetObjectDetailedMeta(objectName)
  24. if err != nil {
  25. fmt.Println("Error:", err)
  26. os.Exit(-1)
  27. }
  28. fmt.Println("Object Meta:", props)
  29. }