Complete a multipart upload

A POST request issued to an object with query parameter uploadId and the appropriate XML block in the body will complete a multipart upload.

Request headers

This implementation of the operation requires that the Content MD-5 header or V4 signing are included with each part that is uploaded.

Table 1. Request headers
Name Type Description
Content-MD5 String The base64-encoded 128-bit MD5 digest of the message (without the headers) according to RFC 1864. This header is used as a message integrity check to verify that the data is the same data that was originally sent. It is required to ensure no corruption during transmission that would otherwise be unfixable after the object is written into a retention bucket.
x-amz-checksum-crc32 String This header is the Base64 encoded, 32-bit CRC32 checksum of the object.
x-amz-checksum-crc32c String This header is the Base64 encoded, 32-bit CRC32C checksum of the object.
x-amz-checksum-crc64nvme String This header is the Base64 encoded, 64-bit CRC64NVME checksum of the object. The CRC64NVME checksum is always a full object checksum.
x-amz-checksum-sha1 String This header is the Base64 encoded, 160-bit SHA1 digest of the object.
x-amz-checksum-sha256 String This header is the Base64 encoded, 256-bit SHA256 digest of the object.
x-amz-checksum-type String Description: Indicates which checksum type will be used to create the checksum for the whole multiplart object.

Other headers

Note: Release 3.19.5 and later: Prevents the overwrite of an existing object with a forbid overwrite precondition. For more information, see: Forbid Overwrite Header .

Syntax


POST https://{endpoint}/{bucket-name}/{object-name}?uploadId={uploadId}= # path style
POST https://{bucket-name}.{endpoint}/{object-name}?uploadId={uploadId}= # virtual host style


<CompleteMultipartUpload>
  <Part>
    <PartNumber>{sequential part number}</PartNumber>
    <ETag>{ETag value from part upload response header}</ETag>
  </Part>
</CompleteMultipartUpload>

Sample request


POST /some-bucket/multipart-object-123?uploadId=0000015a-df89-51d0-2790-dee1ac994053 HTTP/1.1
Authorization: {authorization-string}
x-amz-date: 20170318T035641Z
Content-Type: text/plain; charset=utf-8
Host: 67.228.254.193
Content-Length: 257


<CompleteMultipartUpload>
  <Part>
    <PartNumber>1</PartNumber>
    <ETag>"7417ca8d45a71b692168f0419c17fe2f"</ETag>
  </Part>
  <Part>
    <PartNumber>2</PartNumber>
    <ETag>"7417ca8d45a71b692168f0419c17fe2f"</ETag>
  </Part>
</CompleteMultipartUpload>

Sample response


HTTP/1.1 200 OK
Date: Fri, 03 Mar 2017 19:18:44 GMT
X-Clv-Request-Id: c8be10e7-94c4-4c03-9960-6f242b42424d
Accept-Ranges: bytes
Server: Cleversafe/3.9.1.114
X-Clv-S3-Version: 2.5
ETag: "765ba3df36cf24e49f67fc6f689dfc6e-2"
Content-Type: application/xml
Content-Length: 364


<CompleteMultipartUploadResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
  <Location>http://67.228.254.193/example-bucket/multipart-object-123</Location>
  <Bucket>some-bucket</Bucket>
  <Key>multipart-object-123</Key>
  <ETag>"765ba3df36cf24e49f67fc6f689dfc6e-2"</ETag>
</CompleteMultipartUploadResult>