Skip to main content

UploadPart

Uploads a part in a multipart upload. See UploadPart for more details about the operation and its parameters.

Description

The UploadPart operation uploads a part in a multipart upload. You must initiate a multipart upload before you can upload any part.

note
  • Part numbers can be any number from 1 to 10,000, inclusive.
  • A part number uniquely identifies a part and also defines its position within the object being created.
  • If you upload a new part using the same part number as a previously uploaded part, the previously uploaded part is overwritten.
  • Each part must be at least 5 MB in size, except the last part.
  • After you initiate a multipart upload and upload one or more parts, you must either complete or abort the multipart upload.
  • You can use SSE, but this means your uploaded data will be encrypted twice, once with the specified key, and again for storage.

Request Syntax

PUT /ObjectKey?partNumber=PartNumber&uploadId=UploadId HTTP/1.1
Host: BucketName.qstorage.quilibrium.com
Content-Length: Length
Content-MD5: MD5
x-amz-expected-bucket-owner: OwnerAccountId
Values in italics indicate user input and should be replaced with actual values.

The request body contains the part data to be uploaded.

Request Parameters

URI Parameters

NameDescriptionRequiredType
partNumberPart number of the part being uploaded. This is a positive integer between 1 and 10,000Yesnumber
uploadIdUpload ID identifying the multipart upload whose part is being uploadedYestext

Headers

NameDescriptionRequiredType
Content-LengthSize of the part in bytesYesnumber
Content-MD5The base64-encoded 128-bit MD5 digest of the part dataNotext
x-amz-checksum-crc32Base64 encoded, 32-bit CRC32 checksum of the object. Used as a data integrity checkNotext
x-amz-checksum-crc32cBase64 encoded, 32-bit CRC32C checksum of the object. Used as a data integrity checkNotext
x-amz-checksum-crc64nvmeBase64 encoded, 64-bit CRC64NVME checksum of the part. Used as a data integrity checkNotext
x-amz-checksum-sha1Base64 encoded, 160-bit SHA1 digest of the object. Used as a data integrity checkNotext
x-amz-checksum-sha256Base64 encoded, 256-bit SHA256 digest of the object. Used as a data integrity checkNotext
x-amz-expected-bucket-ownerThe account ID of the expected bucket owner. Request fails with 403 Forbidden if the ID doesn't match the actual ownerNotext
x-amz-request-payerConfirms that the requester knows that they will be charged for the request

Valid values: requester
Notext
x-amz-sdk-checksum-algorithmAlgorithm used to create the checksum when using the SDK. Must match the checksum algorithm from CreateMultipartUpload request

Valid values: CRC32 | CRC32C | SHA1 | SHA256 | CRC64NVME
Notext
x-amz-server-side-encryption-customer-algorithmSpecifies the algorithm to use when encrypting the object (e.g., AES256)Notext
x-amz-server-side-encryption-customer-keyCustomer-provided encryption key for Amazon S3 to use in encrypting data. Must be the same key specified in the initiate multipart upload requestNotext
x-amz-server-side-encryption-customer-key-MD5MD5 digest of the encryption key according to RFC 1321Notext

Examples

Example 1: Upload a part

PUT /large-file.zip?partNumber=1&uploadId=VXBsb2FkIElEIGZvciA2aWWpbmcncyBteS1tb3ZpZS5tMnRzIHVwbG9hZA HTTP/1.1
Host: my-bucket.qstorage.quilibrium.com
Content-Length: 5242880
[Part 1 data]
Values in italics indicate user input and should be replaced with actual values.
HTTP/1.1 200 OK
x-amz-id-2: Example7qoYGN7uMuFuYS6m7a4l
x-amz-request-id: TX234S0F24A06C7
Date: Wed, 01 Mar 2024 12:00:00 GMT
ETag: "7778aef83f66abc1fa1e8477f296d394"
Values in italics indicate variable response values.

Example 2: Upload a part with Content-MD5

PUT /large-file.zip?partNumber=2&uploadId=VXBsb2FkIElEIGZvciA2aWWpbmcncyBteS1tb3ZpZS5tMnRzIHVwbG9hZA HTTP/1.1
Host: my-bucket.qstorage.quilibrium.com
Content-Length: 5242880
Content-MD5: Q2hlY2sgSW50ZWdyaXR5IQ==
[Part 2 data]
Values in italics indicate user input and should be replaced with actual values.
HTTP/1.1 200 OK
x-amz-id-2: Example7qoYGN7uMuFuYS6m7a4l
x-amz-request-id: TX234S0F24A06C7
Date: Wed, 01 Mar 2024 12:00:00 GMT
ETag: "7778aef83f66abc1fa1e8477f296d394"
Values in italics indicate variable response values.

Response Syntax

HTTP/1.1 200 OK
x-amz-id-2: RequestId
x-amz-request-id: AmazonRequestId
Date: ISO8601Date
ETag: EntityTag
Values in italics indicate variable response values.

Response Elements

Response Headers

NameDescriptionRequiredType
x-amz-id-2An identifier for the requestNoString
x-amz-request-idA unique identifier for the requestNoString
DateThe date and time at which the response was sentNoString
ETagEntity tag that identifies the uploaded part's dataNoString
x-amz-checksum-crc32The Base64 encoded, 32-bit CRC32 checksum of the object. For multipart uploads, this is calculated based on the checksum values of each individual partNoString
x-amz-checksum-crc32cThe Base64 encoded, 32-bit CRC32C checksum of the object. For multipart uploads, this is calculated based on the checksum values of each individual partNoString
x-amz-checksum-crc64nvmeThe Base64 encoded, 64-bit CRC64NVME checksum of the part. Used to verify data integrityNoString
x-amz-checksum-sha1The Base64 encoded, 160-bit SHA1 digest of the object. For multipart uploads, this is calculated based on the checksum values of each individual partNoString
x-amz-checksum-sha256The Base64 encoded, 256-bit SHA256 digest of the object. For multipart uploads, this is calculated based on the checksum values of each individual partNoString
x-amz-request-chargedIf present, indicates that the requester was successfully charged for the request

Valid values: requester
NoString
x-amz-server-side-encryptionThe server-side encryption algorithm used when storing this object in Amazon S3

Valid values: AES256 | verenc
NoString
x-amz-server-side-encryption-aws-kms-key-idIf present, indicates the ID of the KMS key that was used for object encryptionNoString
x-amz-server-side-encryption-bucket-key-enabledIndicates whether the multipart upload uses an S3 Bucket Key for server-side encryption with QKMS keys (SSE-KMS)NoString
x-amz-server-side-encryption-customer-algorithmIf server-side encryption with a customer-provided encryption key was requested, confirms the encryption algorithm usedNoString
x-amz-server-side-encryption-customer-key-MD5If server-side encryption with a customer-provided encryption key was requested, provides round-trip message integrity verificationNoString

Special Errors

Error CodeDescription
NoSuchBucketThe specified bucket does not exist
NoSuchUploadThe specified multipart upload does not exist
InvalidRequestThe request is not valid with the current state of the multipart upload
EntityTooSmallThe part size is smaller than the minimum allowed size (5 MB)
InvalidDigestThe Content-MD5 you specified did not match what we received
403Forbidden. Authentication failed or you do not have permission to upload parts

Permissions

You must have the s3:PutObject permission.

Try It Out

Test UploadPart

Upload a part in a multipart upload.

Coming Soon

This feature is currently under development and will be available soon.