edit-icon download-icon

CompleteMultipartUpload

最終更新日: Aug 01, 2018

すべてのデータパートをアップロードしたら、Complete Multipart Upload API を呼び出して、ファイル全体のマルチパートアップロードを完了する必要があります。

この操作では、すべての有効なデータパートのリスト (パート番号と ETag を含む) を提供する必要があります。送信したパートリストを OSS が受信すると、各データパートの有効性が個別に検証されます。すべてのデータパートが検証されると、OSS はこれらのパートを 1 つの完全なオブジェクトに結合します。

リクエスト構文

  1. POST /ObjectName?uploadId=UploadId HTTP/1.1
  2. Host: BucketName.oss-cn-hangzhou.aliyuncs.com
  3. Date: GMT Date
  4. Content-Length: Size
  5. Authorization: Signature
  6. <CompleteMultipartUpload>
  7. <Part>
  8. <PartNumber>PartNumber</PartNumber>
  9. <ETag>ETag</ETag>
  10. </Part>
  11. ...
  12. </CompleteMultipartUpload>

リクエスト パラメーター

マルチパートアップロードモードを初期化するとき、encoding-typeパラメーターを利用して返されるエンコードキーを指定可能です。

名前 説明
encoding-type String  キーのエンコーディングの形を指定しすることが可能です。現在、URLエンコードがサポートされています。キーは、UTF-8エンコーディングを採用しているが、XML 1.0標準は0から10までのASCII値で、文字などの特定の制御文字を、一部の構文解析の文字をサポートしていません。キーは、XML 1.0標準でサポートされていない制御文字が含まれている場合には、encoding-の型の指定することが可能で、指定された型でキーをエンコードします。
デフォルト:なし
オプションの値:url

リクエストの要素

名前 説明
CompleteMultipartUpload Container Complete Multipart Upload リクエストのコンテンツの格納に使用されるコンテナー。
サブノード: 1 つ以上の Part 要素
親ノード: なし
ETag String データパートが正常にアップロードされると OSS から返される ETag 値。
親ノード: Part
Part Container アップロードされたデータパートの格納に使用されるコンテナー。
サブノード: ETag、PartNumber
親ノード: InitiateMultipartUploadResult
PartNumber Integer パート番号。
親ノード: Part

応答の要素

名前 説明
Bucket String バケット名を指定します。
親ノード: CompleteMultipartUploadResult
CompleteMultipartUploadResult Container Complete Multipart Upload リクエストの結果の格納に使用されるコンテナー。
サブノード: Bucket、Key、ETag、Location
親ノード: なし
ETag String ETag (エンティティタグ) は、オブジェクトの生成時に作成され、オブジェクトのコンテンツを示すために使用されます。オブジェクトは、Complete Multipart Upload リクエストに基づいて作成されます。ETag の値は、オブジェクトのコンテンツの UUID です。この ETag の値を使用して、オブジェクトのコンテンツが変更されているかどうかを確認できます。
親ノード: CompleteMultipartUploadResult
Location String 新たに作成されたオブジェクトの URL を指定します。
親ノード: CompleteMultipartUploadResult
Key String 新たに作成されたオブジェクトの名前。
親ノード: CompleteMultipartUploadResult
EncodingType String 返す結果にエンコードタイプを指定します。リクエストの中、エンコードタイプが指定された場合、エンコードされたキーが返されます。
親ノード: Container

詳細分析

  • OSS は、Complete Multipart Upload リクエストを受信すると、最後のパートを除くすべてのパートが 100 KB より大きいことを確認し、ユーザーから送信されたパートリストの各パート番号と ETag を調べます。したがって、データパートをアップロードする際には、パート番号だけでなく、パートが正常にアップロードされるたびに OSS から返される ETag 値も記録する必要があります。
  • OSS の Complete Multipart Upload リクエストの処理には数分かかります。その間にクライアントが OSS から切断されても、リクエストの処理は続行されます。
  • 送信するパートリストのパート番号は、連続していなくてもかまいません (1 つ目のパート番号が 1 で、2 つ目のパート番号が 5 など)。
  • Complete Multipart Upload リクエストが正常に処理されると、対応するアップロード ID が無効になります。
  • 同じオブジェクトが複数の異なるアップロード ID を持つ場合もあります。いずれかのアップロード ID が完了しても、そのオブジェクトの他のアップロード ID には影響しません。
  • Initiate Multipart Upload インターフェイスを呼び出したときに x-oss-server-side-encryption リクエストヘッダーを指定した場合、OSS は Complete Multipart Upload 応答ヘッダーで x-oss-server-side-encryption ヘッダーを返します。
  • x-oss-server-side-encryption の値は、このオブジェクトに使用するサーバー側の暗号化アルゴリズムを示します。

リクエストの例:

  1. POST /multipart.data? uploadId=0004B9B2D2F7815C432C9057C03134D4 HTTP/1.1
  2. Host: oss-example.oss-cn-hangzhou.aliyuncs.com
  3. Content-Length: 1056
  4. Date: Fri, 24 Feb 2012 10:19:18 GMT
  5. Authorization: OSS qn6qrrqxo2oawuk53otfjbyc:8VwFhFUWmVecK6jQlHlXMK/zMT0=
  6. <CompleteMultipartUpload>
  7.   <Part>
  8.     <PartNumber>1</PartNumber>
  9.     <ETag>"3349DC700140D7F86A078484278075A9"</ETag>
  10.   </Part>
  11.   <Part>
  12.     <PartNumber>5</PartNumber>
  13.     <ETag>"8EFDA8BE206636A695359836FE0A0E0A"</ETag>
  14.   </Part>
  15.   <Part>
  16.     <PartNumber>8</PartNumber>
  17.     <ETag>"8C315065167132444177411FDA149B92"</ETag>
  18.   </Part>
  19. </CompleteMultipartUpload>

レスポンスの例:

  1. HTTP/1.1 200 OK
  2. Server: AliyunOSS
  3. Content-Length: 329
  4. Content-Type: Application/xml
  5. Connection: keep-alive
  6. x-oss-request-id: 594f0751-3b1e-168f-4501-4ac71d217d6e
  7. Date: Fri, 24 Feb 2012 10:19:18 GMT
  8. <?xml version="1.0" encoding="UTF-8"?>
  9. <CompleteMultipartUploadResult xmlns="http://doc.oss-cn-hangzhou.aliyuncs.com">
  10. <Location>http://oss-example.oss-cn-hangzhou.aliyuncs.com /multipart.data</Location>
  11. <Bucket>oss-example</Bucket>
  12. <Key>multipart.data</Key>
  13. <ETag>B864DB6A936D376F9F8D3ED3BBE540DD-3</ETag>
  14. </CompleteMultipartUploadResult>