列出某个
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 osfrom 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 = 0while 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':breakmarker = resp['NextPartNumberMarker']