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

Object Storage Service:CompleteMultipartUpload

最終更新日:Jun 03, 2025

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

使用上の注意

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

  • 各パートのサイズを確認する

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

  • リクエストを処理する

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

  • PartNumber

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

    PartNumber の有効値は 1 ~ 10000 です。リクエストにリストされているフラグメント番号は連続していない場合がありますが、昇順でソートする必要があります。たとえば、最初の部分のフラグメント番号が 1 の場合、2 番目の部分のフラグメント番号は 5 にすることができます。

  • UploadId

    1 つのオブジェクトは、独立したアップロード 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 を返します。

権限

デフォルトでは、Alibaba Cloud アカウントにはフル権限があります。Alibaba Cloud アカウントの RAM ユーザーまたは RAM ロールには、デフォルトでは権限がありません。Alibaba Cloud アカウントまたはアカウント管理者は、RAM ポリシーまたはバケットポリシーを通じて操作権限を付与する必要があります。

API

アクション

定義

CompleteMultipartUpload

oss:PutObject

複数のパートを 1 つのオブジェクトにマージします。

oss:PutObjectTagging

複数のパートを 1 つのオブジェクトにマージするときに、x-oss-tagging を使用してオブジェクトタグを指定する場合、この権限が必要です。

リクエスト構文

POST /ObjectName?uploadId=UploadId HTTP/1.1
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
Date: GMT Date
Content-Length: Size
Authorization: Signature
<CompleteMultipartUpload>
<Part>
<PartNumber>PartNumber</PartNumber>
<ETag>ETag</ETag>
</Part>
...
</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 のクエリ/秒 (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 が指定されている場合、レスポンスの フォーマット は変更されません。

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

リクエスト要素

要素

タイプ

説明

CompleteMultipartUpload

コンテナー

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

子ノード: Part。

親ノード: なし。

ETag

String

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

親ノード: Part。

Part

コンテナー

アップロードされたパートを格納するコンテナー。

子ノード: ETag および PartNumber。

親ノード: CompleteMultipartUpload。

PartNumber

Integer

パートの数。

親ノード: Part。

レスポンス要素

要素

タイプ

説明

Bucket

String

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

親ノード: CompleteMultipartUploadResult。

CompleteMultipartUploadResult

コンテナー

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

子ノード: Bucket、Key、ETag、および Location。

親ノード: なし。

ETag

String

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

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

説明

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

親ノード: CompleteMultipartUploadResult。

Location

String

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

親ノード: CompleteMultipartUploadResult。

Key

String

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

親ノード: CompleteMultipartUploadResult。

EncodingType

String

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

親ノード: コンテナー。

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

    リクエストの例

    POST /multipart.data?uploadId=0004B9B2D2F7815C432C9057C031****&encoding-type=url HTTP/1.1
    Host: oss-example.oss-cn-hangzhou.aliyuncs.com
    Content-Length: 1056
    Date: Fri, 24 Feb 2012 10:19:18 GMT
    Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,AdditionalHeaders=content-length,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e
    <CompleteMultipartUpload> 
        <Part> 
            <PartNumber>1</PartNumber>  
            <ETag>"3349DC700140D7F86A0784842780****"</ETag> 
        </Part>  
        <Part> 
            <PartNumber>5</PartNumber>  
            <ETag>"8EFDA8BE206636A695359836FE0A****"</ETag> 
        </Part>  
        <Part> 
            <PartNumber>8</PartNumber>  
            <ETag>"8C315065167132444177411FDA14****"</ETag> 
        </Part> 
    </CompleteMultipartUpload>

    成功レスポンスの例

    HTTP/1.1 200 OK
    Server: AliyunOSS
    Content-Length: 329
    Content-Type: Application/xml
    Connection: keep-alive
    x-oss-request-id: 594f0751-3b1e-168f-4501-4ac71d21****
    Date: Fri, 24 Feb 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
    Host: oss-example.oss-cn-hangzhou.aliyuncs.com
    Content-Length: 223
    Date: Tue, 09 Apr 2019 07:01:56 GMT
    Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,AdditionalHeaders=content-length,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e
    <CompleteMultipartUpload> 
        <Part> 
            <PartNumber>1</PartNumber>  
            <ETag>"25A9F4ABFCC05743DF6E2C886C56****"</ETag> 
        </Part>  
        <Part> 
            <PartNumber>5</PartNumber>  
            <ETag>"25A9F4ABFCC05743DF6E2C886C56****"</ETag> 
        </Part>  
    </CompleteMultipartUpload>

    成功レスポンスの例

    HTTP/1.1 200 OK
    Server: AliyunOSS
    Content-Length: 314
    Content-Type: Application/xml
    Connection: keep-alive
    x-oss-version-id: CAEQMxiBgID6v86D0BYiIDc3ZDI0YTBjZGQzYjQ2Mjk4OWVjYWNiMDljYzhlN****
    x-oss-request-id: 5CAC4364B7AEADE017000662
    Date: Tue, 09 Apr 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>

OSS SDK

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

ossutil

CompleteMultipartUpload 操作に対応する ossutil コマンドについては、「complete-multipart-upload」をご参照ください。

エラーコード

エラーコード

HTTP ステータスコード

説明

InvalidDigest

400

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

FileAlreadyExists

409

考えられる原因:

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

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