分片上传接口 代码示例 python def multipartcopy(self): bucket ' ' key ' ' sourcebucket ' ' sourcekey ' ' parts [] part list uploaded by client partsize 5 1024 1024 headobject resp self.s3client.headobject( Bucketbucket, Keysourcekey ) print('headobject success length: %s' %resp['ContentLength']) size resp['ContentLength'] createmultipartupload resp self.s3client.createmultipartupload( Bucketbucket, Keykey ) uploadid resp['UploadId'] print('createmultipartupload success uploadid: %s' %uploadid) uploadpart start 0 partnum 1 while start < size: if start + partsize < size: end start + partsize 1 else: end size 1 resp self.s3client.uploadpartcopy( Bucketbucket, Keykey, CopySource{'Bucket': sourcebucket, 'Key': sourcekey}, UploadIduploadid, PartNumberpartnum, CopySourceRange'bytes%d%d' %(start, end) ) print('copy part %d success' %partnum) part { 'ETag': resp['CopyPartResult']['ETag'], 'PartNumber': partnum } parts.append(part) start end + 1 partnum + 1 completemultipartupload resp self.s3client.completemultipartupload( Bucketbucket, Keykey, UploadIduploadid, MultipartUpload{ 'Parts': parts }, ) print('completemultipartupload success uploadid: %s' %uploadid) 请求参数 参数 类型 说明 是否必要 Bucket string 桶名称 是 Key string 目的对象key 是 PartNumber int 当前分片号码 是 UploadId string 通过创建上传任务接口获取到的任务Id 是 CopySource string 源对象 是 CopySourceRange string 指定本次分片拷贝的数据范围,必须是"bytesfirstlast"的格式,例如"bytes09"表示拷贝原对象中前10字节的数据,只有当拷贝的分片大小大于5MB的时候有效 否 关于CopySource: 参数 类型 说明 是否必要 Bucket string 桶名称 是 Key string 源对象key 是