本文介绍如何使用追加上传。

    追加类型的文件(Append Object)暂时不支持copyObject操作。文件不存在时,调用AppendObject会创建一个可追加的文件;文件存在时,调用AppendObject会向文件末尾追加内容。

    以下代码用于追加上传文件:

    1. package main
    2. import (
    3. "fmt"
    4. "os"
    5. "strings"
    6. "github.com/aliyun/aliyun-oss-go-sdk/oss"
    7. )
    8. func main() {
    9. // 创建OSSClient实例。
    10. client, err := oss.New("<yourEndpoint>", "<yourAccessKeyId>", "<yourAccessKeySecret>")
    11. if err != nil {
    12. fmt.Println("Error:", err)
    13. os.Exit(-1)
    14. }
    15. // 获取存储空间。
    16. bucket, err := client.Bucket("<yourBucketName>")
    17. if err != nil {
    18. fmt.Println("Error:", err)
    19. os.Exit(-1)
    20. }
    21. var nextPos int64 = 0
    22. // 第一次追加的位置是0,返回值为下一次追加的位置。后续追加的位置是追加前文件的长度。
    23. nextPos, err = bucket.AppendObject("<yourObjectName>", strings.NewReader("YourObjectAppendValue1"), nextPos)
    24. if err != nil {
    25. fmt.Println("Error:", err)
    26. os.Exit(-1)
    27. }
    28. // 第二次追加。
    29. nextPos, err = bucket.AppendObject("<yourObjectName>", strings.NewReader("YourObjectAppendValue2"), nextPos)
    30. if err != nil {
    31. fmt.Println("Error:", err)
    32. os.Exit(-1)
    33. }
    34. // 您可以进行多次Append。
    35. }

    第一次追加(即开始位置是0的追加)可以指定文件元信息。后续追加不能指定文件元信息。

    1. // 第一次追加指定文件元信息。
    2. nextPos, err = bucket.AppendObject("<yourObjectName>", strings.NewReader("YourObjectValue"), 0, oss.Meta("MyProp", "MyPropVal"))
    3. if err != nil {
    4. fmt.Println("Error:", err)
    5. os.Exit(-1)
    6. }