すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:CompleteMultipartUpload

最終更新日:Feb 21, 2024

オブジェクトのすべてのパーツがアップロードされた後、オブジェクトのマルチパートアップロードタスクを完了します。

使用上の注意

CompleteMultipartUpload操作を呼び出すときは、各パーツのパーツ番号とエンティティタグ (ETag) を含む、すべての有効なパーツの完全なリストを提供する必要があります。 Object Storage Service (OSS) が部品のリストを受信した後、OSSは各部品の有効性を次々と検証します。 すべての部品が検証された後、OSSはこれらの部品を完全なオブジェクトに結合します。

  • 各部分のサイズを確認して下さい

    CompleteMultipartUpload操作を呼び出すと、最後のパーツを除く各パーツのサイズが100 KB以上であるかどうかが確認され、パーツリストにある各パーツのパーツ番号とETagが検証されます。 したがって、パーツがアップロードされると、クライアントはパーツのパーツ番号だけでなく、サーバーから返されたパーツのETag値も記録する必要があります。

  • リクエストの処理

    OSSがCompleteMultipartUploadリクエストを処理するのに時間がかかる場合があります。 期間中にクライアントがOSSから切断された場合、OSSはリクエストの処理を続行します。

  • PartNumber

    OSSは、CompleteMultipartUpload操作を呼び出すと、PartNumberの値を検証します。

    PartNumberの値の範囲は1から10000です。 リクエストに記載されている部品番号は連続しない場合がありますが、昇順でソートする必要があります。 例えば、第1の部品の部品番号が1である場合、第2の部品の部品番号は5であり得る。

  • UploadId

    オブジェクトは、独立したアップロードIDを持つ複数のアップロードタスクによってアップロードできます。 1つのアップロードタスクが完了すると、そのアップロードIDは無効になりますが、他のアップロードタスクのアップロードIDは影響を受けません。

  • x-oss-server-side-encryption

    InitiateMultipartUploadリクエストでx-oss-server-side-encryptionヘッダーが指定されている場合、このヘッダーはCompleteMultipartUploadリクエストへのレスポンスで返されます。 レスポンス内のx-oss-server-side-encryptionヘッダーの値は、OSSサーバー上のオブジェクトの暗号化に使用されるメソッドを示します。

バージョン管理

オブジェクトのアップロード先のバケットのバージョン管理が有効になっている場合、CompleteMultipartUpload操作を呼び出して、オブジェクトのマルチパートアップロードタスクを完了します。 この場合、OSSはオブジェクトの一意のバージョンIDを生成し、レスポンスのx-oss-version-IDヘッダーとしてバージョンidを返します。

リクエスト構文

POST /ObjectName?uploadId=UploadId HTTP/1.1
ホスト: BucketName.oss-cn-hangzhou.aliyuncs.com
日付: GMT日付
コンテンツ-長さ: サイズ
承認: 署名
<CompleteMultipartUpload>
<パート>
<PartNumber>PartNumber</PartNumber>
<ETag>ETag</ETag>
</パート>
...
</CompleteMultipartUpload> 

リクエストパラメーター

CompleteMultipartUploadリクエストでencoding-typeパラメーターを設定できます。 OSSは、指定されたエンコーディングタイプを使用して、レスポンス内のオブジェクト名をエンコードします。

パラメーター

データ型

説明

encoding-type

String

レスポンス内のオブジェクト名のエンコードタイプ。 URLエンコードのみがサポートされています。

オブジェクト名には、UTF-8でエンコードされた文字を含めることができます。 ただし、XML 1.0標準を使用して、ASCII値が0から10の文字などの制御文字を解析することはできません。 このパラメーターを設定して、レスポンスでオブジェクト名をエンコードできます。

デフォルトでは、このヘッダーは空のままです。

有効値: url

リクエストヘッダー

ヘッダー

データ型

必須

説明

x-oss-forbid-overwrite

String

任意

CompleteMultipartUpload操作を呼び出したときに、同じオブジェクト名のオブジェクトを上書きするかどうかを指定します。

  • x-oss-forbid-overwriteが指定されていないか、falseに設定されている場合、既存のオブジェクトは同じ名前のオブジェクトで上書きされます。

  • x-oss-forbid-overwriteがtrueに設定されている場合、既存のオブジェクトを同じ名前のオブジェクトで上書きすることはできません。

説明
  • バケットのバージョン管理が有効または一時停止されている場合、x-oss-forbid-overwriteリクエストヘッダーは無効です。 この場合、CompleteMultipartUpload操作は同じ名前のオブジェクトを上書きします。

  • x-oss-forbid-overwriteリクエストヘッダーを指定すると、OSSの1秒あたりのクエリ (QPS) パフォーマンスが低下する可能性があります。 多数のリクエスト (1,000 QPS以上) でx-oss-forbid-overwriteヘッダーを設定する場合は、チケットを起票してください。

x-oss-complete-all

String

任意

現在のアップロードIDを使用してアップロードされたすべてのパーツを一覧表示するかどうかを指定します。

有効値: yes

  • リクエストでx-oss-complete-allがyesに設定されている場合、OSSは現在のアップロードIDを使用してアップロードされたすべてのパーツを一覧表示し、パーツ番号でパーツをソートしてから、CompleteMultipartUpload操作を実行します。 OSSがCompleteMultipartUpload操作を実行すると、アップロードされていない、または現在アップロード中のパーツを検出できません。 CompleteMultipartUpload操作を呼び出す前に、すべてのパーツがアップロードされていることを確認してください。

  • リクエストにx-oss-complete-allが指定されている場合、リクエスト本文は指定できません。 そうしないと、エラーが発生します。

  • リクエストにx-oss-complete-allが指定されている場合、レスポンスの形式は変更されません。

CompleteMultipartUploadリクエストに含まれるHostやDateなどの一般的なリクエストヘッダーの詳細については、「一般的なHTTPヘッダー」をご参照ください。

リクエスト要素

要素

データ型

説明

CompleteMultipartUpload

Container

CompleteMultipartUploadリクエストのコンテンツを格納するコンテナー。

子ノード: 部品。

親ノード: なし。

ETag

String

部品がアップロードされた後にOSSによって返されるETag値。

親ノード: 部分。

パート

Container

アップロードされたパーツを保存するコンテナー。

子ノード: ETagとPartNumber。

親ノード: CompleteMultipartUpload。

PartNumber

Integer

パーツの数。

親ノード: 部分。

レスポンス要素

要素

データ型

説明

Bucket

String

復元するオブジェクトを含むバケットの名前。

親ノード: CompleteMultipartUploadResult。

CompleteMultipartUploadResult

Container

CompleteMultipartUploadリクエストの結果を格納するコンテナー。

子ノード: バケット、キー、ETag、および場所。

親ノード: なし。

ETag

String

オブジェクトの作成時に生成されるETag。 ETagは、オブジェクトのコンテンツを識別するために使用されます。

CompleteMultipartUpload操作を呼び出してオブジェクトを作成した場合、ETag値はオブジェクトコンテンツのMD5ハッシュではなく、特定のルールに基づいて計算された一意の値になります。

説明

オブジェクトのETagを使用して、オブジェクトの内容が変更されているかどうかを確認できます。 ただし、データの整合性を検証するには、オブジェクトのETag値ではなく、オブジェクトのMD5ハッシュを使用することをお勧めします。

親ノード: CompleteMultipartUploadResult。

場所

String

アップロードされたオブジェクトへのアクセスに使用されるURL。

親ノード: CompleteMultipartUploadResult。

キー

String

アップロードされたオブジェクトの名前。

親ノード: CompleteMultipartUploadResult。

EncodingType

String

レスポンス内のオブジェクト名のエンコードタイプ。 このパラメーターがリクエストで指定されている場合、オブジェクト名はレスポンスでエンコードされます。

親ノード: コンテナ。

  • バージョン化されていないバケット内のオブジェクトのマルチパートアップロードタスクを完了する

    リクエストの例

    POST /multipart.data?uploadId=0004B9B2D2F7815C432C9057C031 ****&encoding-type=url HTTP/1.1
    ホスト: oss-example.oss-cn-hangzhou.aliyuncs.com
    コンテンツ-長さ: 1056
    日付: 2月24日金曜日2012 10:19:18 GMT
    承認: OSS qn6qrrqxo2oawuk53otf ****:8VwFhFUWmVecK 6jQlHlXMK/z ****
    <CompleteMultipartUpload> 
        <パート> 
            <PartNumber>1</PartNumber>  
            <ETag>"3349DC700140D7F86A0784842780 ****"</ETag> 
        </パート>  
        <パート> 
            <PartNumber>5</PartNumber>  
            <ETag>"8EFDA8BE206636A695359836FE0A ****"</ETag> 
        </パート>  
        <パート> 
            <PartNumber>8</PartNumber>  
            <ETag>"8C315065167132444177411FDA14 ****"</ETag> 
        </パート>
    </CompleteMultipartUpload> 

    正常に処理された場合のレスポンス例

    HTTP/1.1 200 OK
    サーバー: AliyunOSS
    コンテンツ-長さ: 329
    Content-Type: Application/xml
    接続: キープアライブ
    x-oss-request-id: 594f0751-3b1e-168f-4501-4ac71d21 ****
    日付: 2月24日金曜日2012 10:19:18 GMT
    <?xml version="1.0" encoding="UTF-8"?>
    <CompleteMultipartUploadResult xmlns="http://doc.oss-cn-hangzhou.aliyuncs.com">
        <EncodingType>url</EncodingType>
        <Location>http://oss-example.oss-cn-hangzhou.aliyuncs.com /multipart.data</Location>
        <Bucket>oss-example</Bucket>
        <Key>multipart.data</Key>
        <ETag>"B864DB6A936D376F9F8D3ED3BBE540 ****"</ETag>
    </CompleteMultipartUploadResult> 
  • バージョン管理されたバケット内のオブジェクトのACLの変更

    リクエストの例

    POST /multipart.data?uploadId=63C06A5CFF6F4AE4A6BB3AD7F01C **** HTTP/1.1
    ホスト: oss-example.oss-cn-hangzhou.aliyuncs.com
    コンテンツ-長さ: 223
    日付: 4月2019日火曜日07:01:56 GMT
    承認: OSS 6jftttm6x6s ****:XljBrYBYxDnxKdFMj9WYI6qu ****
    <CompleteMultipartUpload> 
        <パート> 
            <PartNumber>1</PartNumber>  
            <ETag>"25A9F4ABFCC05743DF6E2C886C56 ****"</ETag> 
        </パート>  
        <パート> 
            <PartNumber>5</PartNumber>  
            <ETag>"25A9F4ABFCC05743DF6E2C886C56 ****"</ETag> 
        </パート>
    </CompleteMultipartUpload> 

    正常に処理された場合のレスポンス例

    HTTP/1.1 200 OK
    サーバー: AliyunOSS
    コンテンツ-長さ: 314
    Content-Type: Application/xml
    接続: キープアライブ
    x-oss-version-id: CAEQMxiBgID6v86D0BYiIDc3ZDI0YTBjZGQzYjQ2Mjk4OWVjYWNiMDljYzhlN ****
    x-oss-request-id: 5CAC4364B7AEADE017000662
    日付: 4月2019日火曜日07:01:56 GMT
    <?xml version="1.0" encoding="UTF-8"?>
    <CompleteMultipartUploadResult>
      <Location>http://oss-example.oss-cn-hangzhou.aliyuncs.com/multipart.data</Location>
      <Bucket>oss-example</Bucket>
      <Key>multipart.data</Key>
      <ETag>"097DE458AD02B5F89F9D0530231876 ****"</ETag>
    </CompleteMultipartUploadResult> 

SDK

次のプログラミング言語のOSS SDKを使用して、CompleteMultipartUpload操作を呼び出すことができます。

エラーコード

エラーコード

HTTPステータスコード

説明

InvalidDigest

400

リクエストのContent-MD5値は、OSSによって計算されたMD5ハッシュとは異なります。 データ送信中のエラーを防ぐために、リクエストにContent-MD5値を含めることができます。 OSSは、アップロードされたデータのMD5ハッシュを計算し、リクエストのContent-MD5値と比較します。

FileAlreadyExists

409

考えられる原因:

  • リクエストにはx-oss-forbid-overwrite=trueヘッダーが含まれ、バケットにはアップロードするオブジェクトと同じ名前のオブジェクトが含まれます。

  • CompleteMultipartUpload操作を実行するオブジェクトは、階層的な名前空間機能が有効になっているバケット内のディレクトリです。