帮你快速理解、总结文档立即下载

初始化分块上传

最近更新时间:2026-10-21 18:34:05
我的收藏

功能说明

初始化一次分块上传(Initiate Multipart Upload),成功后返回 UploadID,作为后续上传分块与完成上传的唯一标识。分块上传的完整流程为:初始化取得 UploadID → 多次上传分块并逐块记录 PartNumber 与 ETag → 完成分块上传提交。对高性能桶发起请求时,SDK 通过 RapidCredentialTransport 自动完成会话鉴权。

方法原型

func (s *ObjectService) InitiateMultipartUpload(ctx context.Context, name string, opt *InitiateMultipartUploadOptions) (*InitiateMultipartUploadResult, *Response, error)

参数说明

type InitiateMultipartUploadOptions struct {
*ObjectPutHeaderOptions
}

type ObjectPutHeaderOptions struct {
CacheControl string
ContentDisposition string
ContentEncoding string
ContentType string
ContentLanguage string
Expires string
// 自定义的 x-cos-meta-* header
XCosMetaXXX *http.Header
XCosStorageClass string
}
参数名称
参数描述
类型
是否必选
ctx
请求上下文,用于控制超时与取消
context.Context
是
name
对象键(Object Key),即对象在桶中的完整路径
string
是
opt
初始化选项,可为 nil
*InitiateMultipartUploadOptions
否
ContentType
对象的 MIME 类型
string
否
CacheControl
缓存策略,设置 Cache-Control
string
否
XCosMetaXXX
用户自定义的对象元信息,必须以 x-cos-meta- 开头
*http.Header
否
XCosStorageClass
存储类型,高性能桶仅支持默认值(RAPID)
string
否

返回结果说明

type InitiateMultipartUploadResult struct {
Bucket string
Key string
UploadID string
}
参数名称
参数描述
类型
Bucket
分块上传所在的桶名
string
Key
对象键
string
UploadID
本次分块上传的标识,后续上传分块、完成或终止上传均需携带
string

使用案例

package main

import (
"context"
"log"
"net/http"
"net/url"
"os"
"time"

"github.com/tencentyun/cos-go-sdk-v5"
)

func main() {
u, _ := url.Parse("https://examplebucket-x--1250000000.cosrapid.ap-guangzhou.myqcloud.com")
b := &cos.BaseURL{BucketURL: u}
base := &cos.AuthorizationTransport{
SecretID: os.Getenv("SECRETID"),
SecretKey: os.Getenv("SECRETKEY"),
}
c := cos.NewClient(b, &http.Client{
Transport: cos.NewRapidCredentialTransport(base),
Timeout: 30 * time.Second,
})

ctx := context.Background()
name := "exampleobject.txt"

opt := &cos.InitiateMultipartUploadOptions{
ObjectPutHeaderOptions: &cos.ObjectPutHeaderOptions{
ContentType: "text/plain",
},
}
res, _, err := c.Object.InitiateMultipartUpload(ctx, name, opt)
if err != nil {
log.Fatalf("InitiateMultipartUpload failed: %v", err)
}
log.Printf("UploadID: %s\\n", res.UploadID)
}

注意事项

返回的 UploadID 需妥善保存,后续 上传分块、完成分块上传、终止分块上传 均需携带。
已初始化但未完成的分块上传会占用存储空间并产生存储费用,请及时 完成分块上传 或 终止分块上传。
opt 可为 nil,此时按对象类型的默认头部初始化。
错误处理方式请参见 异常处理。