オブジェクトのすべてのパーツがアップロードされた後、オブジェクトのマルチパートアップロードタスクを完了します。
使用上の注意
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-complete-all | String | 任意 | 現在のアップロードIDを使用してアップロードされたすべてのパーツを一覧表示するかどうかを指定します。 有効値: yes
|
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 | 考えられる原因:
|