オブジェクトメタの詳細については、「OSS 開発者ガイド」内の「オブジェクトメタ」をご参照ください。 オブジェクトメタの完全なコードについては、『GitHub』をご参照ください。

オブジェクトメタの設定

オブジェクトをアップロードする際に、オブジェクトメタを設定します。 次の表は、ユーザーが構成できるオブジェクトメタを示しています。

パラメーター 説明
CacheControl オブジェクトがダウンロードされたときの Web ページのキャッシュアクションを指定します。
ContentDisposition // ダウンロードされたときのオブジェクトの名前を指定します。
ContentEncoding オブジェクトがダウンロードされるときのエンコード形式を指定します。
Expires キャッシュの有効期限を指定します (GMT が使用されます)。
ServerSideEncryption OSS がオブジェクトを作成するときに、サーバー側の暗号化アルゴリズムを指定します。 有効値は AES256 です。
ObjectACL OSS によって作成されたオブジェクトの ACL を指定します。
Meta プレフィックスとして X-Oss-Meta- を使用して、カスタムオブジェクトメタを指定します。

次のコードを実行してオブジェクトメタを設定します。

package main

import (
	"fmt"
	"os"
	"time",
	"strings"
	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func main() {
	// Create an OSSClient instance.
	client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
	if err ! = nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	// Obtain the bucket.
	bucket, err := client.Bucket("<yourBucketName>")
	if err ! = nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	// Configure Object Meta: The expiration time is 2049-01-10, 23:00:00 in the GMT format. ACL は公開読み取りです。 The custom Object Meta is MyProp (the value is 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"),
	}

	// Use the data stream to upload.
	err = bucket.PutObject("<yourObjectName>", strings.NewReader("MyObjectValue"), options...)
	if err ! = nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	// Obtain Object Meta.
	props, err := bucket.GetObjectDetailedMeta("<yourObjectName>")
	if err ! = nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
	fmt.Println("Object Meta:", props)
}

オブジェクトメタの変更

次のコードを実行して、一度に 1 つ以上のオブジェクトメタを変更します。

package main

import (
	"fmt"
	"os"
	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func main() {
	// Create an OSSClient instance.
	client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
	if err ! = nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	bucketName := "<yourBucketName>"
	objectName := "<yourObjectName>"

	// Obtain the bucket.
	bucket, err := client.Bucket(bucketName)
	if err ! = nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	// Modify one Object Meta at a time.
	err = bucket.SetObjectMeta(objectName, oss.Meta("MyMeta", "MyMetaValue1"))
	if err ! = nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	// Modify multiple Object Metas at one time.
	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)
	}

	// Obtain Object Meta.
	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() {
	// Create an OSSClient instance.
	client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
	if err ! = nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	bucketName := "<yourBucketName>"
	objectName := "<yourObjectName>"

	// Obtain the bucket.
	bucket, err := client.Bucket(bucketName)
	if err ! = nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	// Obtain Object Meta.
	props, err := bucket.GetObjectDetailedMeta(objectName)
	if err ! = nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
	fmt.Println("Object Meta:", props)
}