追加オブジェクトに対して copyObject を実行することはできません。 AppendObject を呼び出すときに、ターゲットオブジェクトが存在しない場合は、新しい追加可能オブジェクトが作成されます。 ターゲットオブジェクトが存在する場合、アップロードされたコンテンツはオブジェクトの末尾に追加されます。

追加アップロードでファイルをアップロードするには、次のコードを実行します。

package main

import (
	"fmt"
	"os"
	"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)
	}

	var nextPos int64 = 0
	// If the object is appended for the first time, the append position is 0, and the returned value is the position for the next append. The position for the next append is the current length of the object.
	nextPos, err = bucket.AppendObject("<yourObjectName>", strings.NewReader("YourObjectAppendValue1"), nextPos)
	if err ! = nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	// Start the second append.
	nextPos, err = bucket.AppendObject("<yourObjectName>", strings.NewReader("YourObjectAppendValue2"), nextPos)
	if err ! = nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	// You can append content to an object for multiple times.
}

オブジェクトメタを指定できるのは、最初にオブジェクトを追加するときのみです (つまり、追加位置は0です)。

	// Specify the Object Meta in the first append upload.
	nextPos, err = bucket.AppendObject("<yourObjectName>", strings.NewReader("YourObjectValue"), 0, oss.Meta("MyProp", "MyPropVal"))
	if err ! = nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}