该接口用于实现分片上传操作中片段的上传。
在上传任何一个分片之前,必须执行Initial Multipart Upload操作来初始化分片上传操作,初始化成功后,OOS会返回一个上传ID,这是一个唯一的标识,用户必须在调用Upload Part接口时加入该ID。
分片号PartNumber可以唯一标识一个片段并且定义该分片在文件中的位置,范围从1到10000。如果用户用之前上传过的片段的分片号来上传新的分片,之前的分片将会被覆盖。
除了最后一个分片外,所有分片的都不小于5M,最后一个分片的大小不受限制。
为了确保数据不会由于网络传输而毁坏,需要在每个分片上传请求中指定Content-MD5头,OOS通过提供的Content-MD5值来检查数据的完整性,如果不匹配,则会返回一个错误信息。
请求语法
PUT /ObjectName?partNumber=PartNumber&uploadId=UploadId HTTP/1.1
Host: BucketName.oos-cn.ctyunapi.cn
Date: date
Content-Length: Size
Authorization: SignatureValue
请求头
名称 描述 是否必须 partNumber
标识片段的分片号。
类型:整型。
是 uploadId 分片上传ID。
类型:字符串。
是 Content-Length 该分片的大小,单位为字节。
类型:字符串。
是 Content-MD5 该分片数据的128位采用base64编码的MD5值。
这个头可以用来验证该分片数据是否与原始数据值保持一致。尽管这个值是可选的,我们仍然推荐使用Content-MD5机制来执行端到端的一致性校验。
类型:字符串。
否 x-amz-limit 文件上传限制的速率。
类型:字符串。
取值:格式为:
x-amz-limit:rate=xxx
x-amz-limit:concurrency=xxx
x-amz-limit:rate=xxx, concurrency=xxx
其中
rate为速率,取值为大于0的正整数,单位是KiB/s。当取值是大于0小于128的整数时,按速率等于128KiB/s处理。
concurrency为并发连接数。取值为大于0的正整数。
否 Expect 用户的应用中设置请求头为100-continue,应用在接收到请求回应之前不会发送请求实体。
如果基于请求头的消息被拒绝,消息的实体不会被发送。
类型:字符串。
有效值:100-continue。
否
请求示例
示例中的PUT请求执行一次分片上传过程中的片段(片段1)上传操作。该请求要求包含在Initial Multipart Upload操作中获取到的上传ID。
PUT /my-movie.m2ts?partNumber=1&uploadId=638428231343369398 HTTP/1.1
Host: example-bucket.oos-cn.ctyunapi.cn
Date: Mon, 1 Nov 2010 20:34:56 GMT
Content-Length: 10485760
Content-MD5: pUNXr/BjKK5G2UKvaRRrOA==
Authorization: SignatureValue
***part data omitted***
响应示例
响应中包含Etag头,用户需要在最后发送完成分片上传过程请求的时候包含该Etag值。
HTTP/1.1 200 OK
x-amz-request-id: 28fcb1549c45469228746b656c76696e672773207265717565
Date: Mon, 1 Nov 2010 20:34:56 GMT
ETag: "b54357faf0632cce46e942fa68356b38"
Content-Length: 0
Connection: keep-alive
Server: CTYUN