CompleteMultipartUpload

最終更新日:2025-08-18 15:54:03

API説明

  1. ユーザーがすべてのセグメントをアップロードした後、「マージセグメント」インターフェースを呼び出すことで、システムがユーザーの指定したセグメントをサーバー側で1つの完全なオブジェクトに統合します。「マージセグメント」操作を実施する前は、アップロード済みデータをダウンロードすることはできません。

  2. セグメントの統合時には、マルチパートアップロードタスク初期化時に記録された追加メッセージヘッダー情報を、オブジェクトのメタデータへコピーする必要があります。この処理過程は、これらのメッセージヘッダー付きの通常オブジェクトアップロード時と同じです。

  3. アップロード済みのセグメントは、対応するマルチパートアップロードタスクがキャンセルされない限り、ユーザーの容量クォータを消費し続けます。対応するタスクの「マージセグメント」処理が完了すると、指定したマルチパートデータのみが容量クォータを占有します。「マージセグメント」時に指定されなかったパートデータは、「マージセグメント」完了後に削除され、同時に容量クォータも解放されます。

  4. マージ後のマルチパートアップロードデータは、既存のダウンロードオブジェクトインターフェースを介して、マルチパートアップロードオブジェクト全体としてダウンロード可能です。

  5. マージ後のマルチパートアップロードデータは、既存のオブジェクト削除インターフェースによって削除できます。削除すると、当該マルチパートアップロードオブジェクトのすべてのパートデータが削除され、元に戻すことはできません。

  6. マージされたマルチパートアップロードデータのEtagは、全体オブジェクトのMD5値ではありません。オブジェクトのダウンロードやリスト表示時にみられるマルチパートデータのEtag生成規則は「MD5(M1M2……MN)-N」となります(Mnは各n番目パートのMD5値、Nはパート数を表します)。

リクエスト構文

POST /ObjectName?uploadId=uploadID HTTP/1.1
Host: Bucket.Endpoint
Date: date
Content-Length: length
Authorization: authorization

<CompleteMultipartUpload>
  <Part>
    <PartNumber>partNum1</PartNumber>
    <ETag>etag1</ETag>
  </Part>

  <Part>
    <PartNumber>partNum2</PartNumber>
    <ETag>etag2</ETag>
  </Part>

  <Part>
    <PartNumber>partNum3</PartNumber>
    <ETag>etag3</ETag>
  </Part>
</CompleteMultipartUpload>

URIリクエストパラメータ

パラメータ名 説明 必須
uploadId Initiate Multipart Upload レスポンス時のアップロードID yes

リクエストヘッダー

common request headers のみ使用してください。

リクエストボディ

リクエストボディは、XML形式の分割データ情報です。

要素名 説明 必須
CompleteMultipartUpload マージするセグメントの一覧。
型: XML
親: null
子ノード: 1つ以上の Part要素
Yes
Part アップロードセグメントの要素リスト。
型: XML
親ノード: CompleteMultipart
子ノード: PartNumber, ETag
Yes
PartNumber セグメント番号。
型: 整数
親ノード: Part
Yes
ETag 対応するセグメントのETag値。
型: 文字列
親ノード: Part
Yes

レスポンス構文

HTTP/1.1 status_code
x-wos-request-id: request id
Content-Type: application/xml
Content-Length: length
Date: date
Connection: state
Server:WS-web-server

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<CompleteMultipartUploadResult xmlns="https://www.wangsu.com/document">
  <Location>http://example-Bucket.Endpoint/example-Object</Location>
  <Bucket>BucketName</Bucket>
  <Key>ObjectName</Key>
  <ETag>ETag</ETag>
</CompleteMultipartUploadResult>

レスポンスヘッダー

common response headers のみ使用してください。

レスポンス要素

要素名 説明
CompleteMultipartUpload レスポンスコンテナ
型: XML
子ノード: Location, Bucket, Key, ETag
親ノード: なし
Location マージ後オブジェクトのURL
型: 文字列
親ノード: CompleteMultipartUpload
Bucket マージ後セグメントが格納されるスペース名
型: 文字列
親ノード: CompleteMultipartUpload
Key マージ後オブジェクトのキー
型: 文字列
親ノード: CompleteMultipartUpload
ETag 各セグメントのETagから計算された結果タイプ
型: 文字列
親ノード: CompleteMultipartUpload

特殊エラー

状況 HTTPステータス エラーコード メッセージ
メッセージボディのXMLデータで指定したetag値が間違っている 400 Bad Request InvalidPart One or more of the specified parts could not be found. The part may not have been uploaded, or the specified entity tag may not match the part’s entity tag.
XMLデータが存在しない 400 Bad Request InvalidRequest You must specify at least one part
XMLデータのフォーマット異常(例:partNumberタグが抜けている等) 400 Bad Request MalformedXML The XML you provided was not well-formed or did not validate against our published schema

POST /example-object?uploadId=AAAsb2FkIElEIGZvciBlbHZpbmcncyWeeS1tb3ZpZS5tMnRzIRRwbG9hZA HTTP/1.1
Host: bucket.s3-cn-east-1.wcsapi.com
Date: Mon, 1 Nov 2020 20:34:56 GMT
Content-Length: 391

Authorization: WOS AKIAIOSFODNN7EXAMPLE:0RQf4/cRonhpaBX5sCYVf1bNRuU=
<CompleteMultipartUpload>
  <Part>
    <PartNumber>1</PartNumber>
    <ETag>"a54357aff0632cce46d942af68356b38"</ETag>
  </Part>
  <Part>
    <PartNumber>2</PartNumber>
    <ETag>"0c78aef83f66abc1fa1e8477f296d394"</ETag>
  </Part>
  <Part>
    <PartNumber>3</PartNumber>
    <ETag>"acbd18db4cc2f85cedef654fccc4a4d8"</ETag>
  </Part>
</CompleteMultipartUpload>


HTTP/1 200 OK
x-wos-request-id: 100315319214214320170602225414pFHJIshn
Access-Control-Allow-Origin: *
Connection: close
Content-Type: application/xml
Content-Length: 301
Date: Mon, 05 Jun 2017 09:56:01 GMT
Server: WS-web-server

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<CompleteMultipartUploadResult xmlns="https://www.wangsu.com/document">
  <Bucket>r28-sync-data</Bucket>
  <ETag>4dc0dc31f93e3f73c52ce251fcdfcaa2-2</ETag>
  <Key>multiobject</Key>
  <Location>http://example-Bucket.Endpoint/example-Object</Location>
</CompleteMultipartUploadResult>