初始化一次分块上传(Initiate Multipart Upload),成功后返回
UploadId,作为后续上传分块与完成上传的唯一标识。分块上传的完整流程为:初始化取得 UploadId → 多次上传分块并逐块记录 PartNumber 与 ETag → 完成分块上传提交。对高性能桶发起请求时,SDK 自动完成会话鉴权。注意事项
自动分块上传与续传的完整用法见 Python SDK 上传本地文件。
分块上传用于文件对象,
Key 不以 / 结尾;以 / 结尾会返回 400 InvalidArgument。目录对象请用 Python SDK 上传对象 创建。如需防止覆盖已有文件对象,必须在 Python SDK 完成分块上传 调用中显式设置
ForbidOverwrite='true';不能依赖初始化请求中的设置保护最终写入。返回的
UploadId 需妥善保存,后续 Python SDK 上传分块、Python SDK 完成分块上传、Python SDK 终止分块上传 均需携带。已上传但未完成提交的分块会占用存储空间,请及时 Python SDK 完成分块上传 或 Python SDK 终止分块上传。
高性能桶不支持对象版本,传入
VersionId 会本地报错。大文件上传建议直接使用高级接口
upload_file,其内部会自动完成初始化、并发上传分块、完成分块上传,并支持断点续传与 EnableMD5 完整性校验。初始化分块上传属于数据面接口,SDK 使用 session 临时凭证签名。
请求
方法原型
def create_multipart_upload(self, Bucket, Key, **kwargs)
参数说明
参数名称 | 参数描述 | 类型 | 是否必选 |
Bucket | 高性能桶完整名称,格式为 <BucketName>-x--<APPID> | string | 是 |
Key | 对象键(Object Key),即对象在桶中的完整路径 | string | 是 |
kwargs | 可选请求参数,使用本文列出的参数 | dict | 否 |
常用
kwargs:参数名称 | 参数描述 | 类型 | 是否必选 |
ContentType | 对象的 MIME 类型 | string | 否 |
CacheControl | 缓存策略,设置 Cache-Control | string | 否 |
Metadata | 用户自定义的对象元信息,键须以 x-cos-meta- 开头 | dict | 否 |
StorageClass | 存储类型,高性能桶仅支持默认值( RAPID) | string | 否 |
响应
返回值为解析后的 dict:
参数名称 | 参数描述 | 类型 |
Bucket | 分块上传所在的桶名 | string |
Key | 对象键 | string |
UploadId | 本次分块上传的标识,后续上传分块、完成或终止上传均需携带 | string |
错误码
实际案例
# -*- 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)resp = client.create_multipart_upload(Bucket='examplebucket-x--1250000000',Key='exampleobject.txt',ContentType='text/plain')upload_id = resp['UploadId']print('UploadId: %s' % upload_id)