本文介绍如何使用追加上传。
追加类型的文件(Append Object)暂时不支持copyObject操作。文件不存在时,调用AppendObject
会创建一个可追加的文件;文件存在时,调用AppendObject
会向文件末尾追加内容。
以下代码用于追加上传文件:
package main
import (
"fmt"
"os"
"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)
}
var nextPos int64 = 0
// 第一次追加的位置是0,返回值为下一次追加的位置。后续追加的位置是追加前文件的长度。
nextPos, err = bucket.AppendObject("<yourObjectName>", strings.NewReader("YourObjectAppendValue1"), nextPos)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// 第二次追加。
nextPos, err = bucket.AppendObject("<yourObjectName>", strings.NewReader("YourObjectAppendValue2"), nextPos)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// 您可以进行多次Append。
}
第一次追加(即开始位置是0的追加)可以指定文件元信息。后续追加不能指定文件元信息。
// 第一次追加指定文件元信息。
nextPos, err = bucket.AppendObject("<yourObjectName>", strings.NewReader("YourObjectValue"), 0, oss.Meta("MyProp", "MyPropVal"))
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}