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

列举已上传分块

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

功能说明

列出某个 UploadID 下已上传的所有分块(List Parts),常用于 完成分块上传 前核对分块信息,或在断点续传场景中确认已上传分块。对高性能桶发起请求时,SDK 通过 RapidCredentialTransport 自动完成会话鉴权。

方法原型

func (s *ObjectService) ListParts(ctx context.Context, name, uploadID string, opt *ObjectListPartsOptions) (*ObjectListPartsResult, *Response, error)

参数说明

type ObjectListPartsOptions struct {
EncodingType string
MaxParts string
PartNumberMarker string
}
参数名称
参数描述
类型
是否必选
ctx
请求上下文,用于控制超时与取消
context.Context
是
name
对象键(Object Key)
string
是
uploadID
初始化分块上传返回的 UploadID
string
是
opt
列举选项,可为 nil
*ObjectListPartsOptions
否
MaxParts
单次最多返回的分块数量,取值范围 1~1000,默认 1000
string
否
PartNumberMarker
从该分块编号之后开始列举,用于翻页
string
否
EncodingType
返回结果的编码方式,可选值:url
string
否

返回结果说明

type ObjectListPartsResult struct {
Bucket string
Key string
UploadID string
MaxParts string
PartNumberMarker string
NextPartNumberMarker string
IsTruncated bool
Parts []Object
}
参数名称
参数描述
类型
Bucket
桶名
string
Key
对象键
string
UploadID
分块上传标识
string
MaxParts
本次列举的最大数量
string
PartNumberMarker
本次列举起始的分块编号标记
string
NextPartNumberMarker
下一页列举的分块编号标记
string
IsTruncated
结果是否被截断,为 true 时需翻页
bool
Parts
已上传分块列表,每项含 PartNumber、ETag、Size、LastModified
[]Object

使用案例

package main

import (
"context"
"fmt"
"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"
uploadID := "exampleUploadId"

res, _, err := c.Object.ListParts(ctx, name, uploadID, nil)
if err != nil {
log.Fatalf("ListParts failed: %v", err)
}
for _, p := range res.Parts {
fmt.Printf("PartNumber: %d, ETag: %s, Size: %d, LastModified: %s\\n",
p.PartNumber, p.ETag, p.Size, p.LastModified)
}
}

注意事项

IsTruncated 为 true 时表示还有更多分块,需用 NextPartNumberMarker 作为下一次的 PartNumberMarker 继续翻页。
结果中的 PartNumber 与 ETag 可直接用于组装 完成分块上传 所需的 Parts 列表。
若要列举桶内所有未完成的分块上传任务(而非某个 UploadID 的分块),请使用 列举分块上传。
错误处理方式请参见 异常处理。