功能说明
初始化一次分块上传(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 stringContentDisposition stringContentEncoding stringContentType stringContentLanguage stringExpires string// 自定义的 x-cos-meta-* headerXCosMetaXXX *http.HeaderXCosStorageClass 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 stringKey stringUploadID string}
参数名称 | 参数描述 | 类型 |
Bucket | 分块上传所在的桶名 | string |
Key | 对象键 | string |
UploadID | 本次分块上传的标识,后续上传分块、完成或终止上传均需携带 | string |
使用案例
package mainimport ("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)}
注意事项
opt 可为 nil,此时按对象类型的默认头部初始化。