マルチパートアップロードイベントを開始したら、指定したオブジェクト名とアップロード ID に基づいて、データをパートに分けてアップロードできます。アップロードされた各パートには、1 ~ 10,000 の範囲のパート番号が割り当てられます。
同じアップロード ID の場合、このパート番号によって、このデータパートだけでなくファイル全体におけるこのパートの位置も識別されます。同じパート番号を使用して新しいデータをアップロードすると、このパート番号で識別される既存のデータが上書きされます。最後のパート以外のパートの最小サイズは 100 KB です。最後のパートのサイズには制約はありません。
リクエスト構文
PUT /ObjectName?partNumber=PartNumber&uploadId=UploadId HTTP/1.1
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
Date: GMT Date
Content-Length: Size
Authorization: SignatureValue
詳細分析
- InitiateMultipartUpload インターフェイスを呼び出してデータパートをアップロードする前に、このインターフェイスを呼び出して、OSS サーバーによって発行されるアップロード ID を取得する必要があります。
- マルチパートアップロードモードでは、最後のパート以外のパートはすべて 100 KB を超えている必要があります。ただし、UploadPart インターフェイスでは、アップロードされたパートのサイズがすぐに検証されるわけではありません (そのパートが最後のパートかどうかがわからないため)。アップロードされたパートのサイズは、マルチパートアップロードが完了して初めて検証されます。
- OSS は、受信したデータパートの MD5 値を ETag ヘッダーに配置し、それをユーザーに返します。
- パート番号の範囲は 1 ~ 10,000 です。パート番号がこの範囲を超えている場合、OSS は InvalidArgument エラーコードを返します。
- InitiateMultipartUpload インターフェイスを呼び出したときに x-oss-server-side-encryption リクエストヘッダーを指定した場合、OSS はアップロードされたパートを暗号化し、UploadPart 応答ヘッダーで x-oss-server-side-encryption ヘッダーを返します。x-oss-server-side-encryption の値は、このパートに使用するサーバー側の暗号化アルゴリズムを示します。詳細については、「InitiateMultipartUpload」インターフェイスを参照してください。
- ネットワーク経由で転送されたデータにエラーがないことを確認するために、リクエストに Content-MD5 を含めます。OSS ではアップロードされたデータの MD5 値が計算され、ユーザーがアップロードした MD5 値と比較されます。それらの値が一致しない場合、OSS は InvalidDigest エラーコードを返します。
例
リクエストの例:
PUT /multipart.data?partNumber=1&uploadId=0004B9895DBBB6EC98E36 HTTP/1.1
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Content-Length:6291456
Date: Wed, 22 Feb 2012 08:32:21 GMT
Authorization: OSS qn6qrrqxo2oawuk53otfjbyc:J/lICfXEvPmmSW86bBAfMmUmWjI=
[6291456 bytes data]
レスポンスの例:
HTTP/1.1 200 OK
Server: AliyunOSS
Connection: keep-alive
ETag: 7265F4D211B56873A381D321F586E4A9
x-oss-request-id: 3e6aba62-1eae-d246-6118-8ff42cd0c21a
Date: Wed, 22 Feb 2012 08:32:21 GMT