該接口用于實現分片上傳操作中片段的上傳。
在上傳任何一個分片之前,必須執行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