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

列举已上传分块

最近更新时间:2026-10-21 18:34:07
我的收藏
列出某个 UploadId 下已上传的所有分块(List Parts),常用于 Python SDK 完成分块上传 前核对分块信息,或在断点续传场景中确认已上传分块。对高性能桶发起请求时,SDK 自动完成会话鉴权。

注意事项

Key 与 UploadId 必须对应同一次初始化分块上传;Key 表示不以 / 结尾的文件对象,不能改成目录对象键。
IsTruncated 为 true 时表示还有更多分块,需将 NextPartNumberMarker 原样作为下一次的 PartNumberMarker 继续翻页,不要将游标当作分块编号自行计算。
完整分页获取结果后,按 PartNumber 的数值升序整理 PartNumber 与 ETag,再组装 Python SDK 完成分块上传 所需的 MultipartUpload。
若要列举桶内所有未完成的分块上传任务(而非某个 UploadId 的分块),请使用 Python SDK 列举分块上传。
列举已上传分块属于数据面接口,SDK 使用 session 临时凭证签名。

请求

方法原型

def list_parts(self, Bucket, Key, UploadId, EncodingType='', MaxParts=1000,
PartNumberMarker=0, **kwargs)

参数说明

参数名称
参数描述
类型
是否必选
Bucket
高性能桶完整名称,格式为 <BucketName>-x--<APPID>
string
是
Key
对象键(Object Key)
string
是
UploadId
初始化分块上传返回的 UploadId
string
是
EncodingType
返回结果的编码方式,可选值:url
string
否
MaxParts
单次最多返回的分块数量,取值范围1~1000,默认1000
int
否
PartNumberMarker
分页游标;首次调用可不传(默认为 0),后续原样使用响应的 NextPartNumberMarker
string / int
否
kwargs
可选请求参数,使用本文列出的参数
dict
否

响应

返回值为解析后的 dict:
参数名称
参数描述
类型
Bucket
桶名
string
Key
对象键
string
UploadId
分块上传标识
string
MaxParts
本次列举的最大数量
string
PartNumberMarker
本次请求使用的分页游标
string
NextPartNumberMarker
下一页分页游标,原样传给下次请求
string
IsTruncated
结果是否被截断,为 true 时需翻页
string
Part
已上传分块列表,每项含 PartNumber、ETag、Size、LastModified
list

错误码

本接口遵循统一的错误响应和错误码,详情请参见 错误码文档。

实际案例

# -*- coding=utf-8 -*-
import os
from qcloud_cos import CosConfig, CosS3Client

# 高性能桶经 VPC 内网 HTTP 80 端口接入,SDK 的网关 DNS 负载均衡也仅对 HTTP 请求生效;SDK 默认 https,此处需显式指定 http。
config = CosConfig(
Scheme='http',
Region='ap-guangzhou',
SecretId=os.environ['COS_SECRET_ID'],
SecretKey=os.environ['COS_SECRET_KEY'],
Token=os.environ.get('COS_SECURITY_TOKEN'),
EnableRapidDomain=True)
client = CosS3Client(config)

marker = 0
while True:
resp = client.list_parts(
Bucket='examplebucket-x--1250000000',
Key='exampleobject.txt',
UploadId='exampleUploadId',
PartNumberMarker=marker)
for part in resp.get('Part') or []:
print('PartNumber: %s, ETag: %s, Size: %s' % (
part['PartNumber'], part['ETag'], part.get('Size')))
if resp.get('IsTruncated') != 'true':
break
marker = resp['NextPartNumberMarker']