开发者社区 问答 正文

go sdk追加上传

已解决

展开
收起
2018-04-28 11:15:38 606 分享 版权
1 条回答
写回答
取消 提交回答
  • 采纳回答

    详细解答可以参考官方帮助文档

    OSS支持可追加的文件类型,通过Bucket.AppendObject来上传可追加的文件, 调用时需要指定文件追加的位置,对于新创建文件,这个位置是0;对于已经存 在的文件,这个位置必须是追加前文件的长度。

    • 文件不存在时,调用AppendObject会创建一个可追加的文件;
    • 文件存在时,调用AppendObject会向文件末尾追加内容。

    提示:

    • 追加上传的示例代码在sample/append_object.go
        import "strings"
        import "github.com/aliyun/aliyun-oss-go-sdk/oss"
    
        client, err := oss.New("Endpoint", "AccessKeyId", "AccessKeySecret")
        if err != nil {
            // HandleError(err)
        }
    
        bucket, err := client.Bucket("my-bucket")
        if err != nil {
            // HandleError(err)
        }
    
        var nextPos int64 = 0
        // 第一次追加的位置是0,返回值为下一次追加的位置
        nextPos, err = bucket.AppendObject("my-object", strings.NewReader("YourObjectValue"), nextPos)
        if err != nil {
            // HandleError(err)
        }
    
        // 第二次追加
        nextPos, err = bucket.AppendObject("my-object", strings.NewReader("YourObjectValue"), nextPos)
        if err != nil {
            // HandleError(err)
        }
    
        // 您还可以进行多次Append
    

    注意:

    • 只能向可追加的文件(即通过AppendObject创建的文件)追加内容
    • 可追加的文件不能被拷贝

    第一次追加时,即位置开始位置是0的追加,您可以指定文件(Object)的元信息;除了第一次追加,其它追加不能指定元信息。

        // 第一次追加指定元信息
        nextPos, err = bucket.AppendObject("my-object", strings.NewReader("YourObjectValue"), 0, oss.Meta("MyProp", "MyPropVal"))
        if err != nil {
            // HandleError(err)
        }
    
    2018-05-02 08:59:15
    赞同 展开评论