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
Name | Description | Required | Type |
---|---|---|---|
partNumber | Part number of the part being uploaded. This is a positive integer between 1 and 10,000 | Yes | number |
uploadId | Upload ID identifying the multipart upload whose part is being uploaded | Yes | text |
Headers
Name | Description | Required | Type |
---|---|---|---|
Content-Length | Size of the part in bytes | Yes | number |
Content-MD5 | The base64-encoded 128-bit MD5 digest of the part data | No | text |
x-amz-checksum-crc32 | Base64 encoded, 32-bit CRC32 checksum of the object. Used as a data integrity check | No | text |
x-amz-checksum-crc32c | Base64 encoded, 32-bit CRC32C checksum of the object. Used as a data integrity check | No | text |
x-amz-checksum-crc64nvme | Base64 encoded, 64-bit CRC64NVME checksum of the part. Used as a data integrity check | No | text |
x-amz-checksum-sha1 | Base64 encoded, 160-bit SHA1 digest of the object. Used as a data integrity check | No | text |
x-amz-checksum-sha256 | Base64 encoded, 256-bit SHA256 digest of the object. Used as a data integrity check | No | text |
x-amz-expected-bucket-owner | The account ID of the expected bucket owner. Request fails with 403 Forbidden if the ID doesn't match the actual owner | No | text |
x-amz-request-payer | Confirms that the requester knows that they will be charged for the request Valid values: requester | No | text |
x-amz-sdk-checksum-algorithm | Algorithm used to create the checksum when using the SDK. Must match the checksum algorithm from CreateMultipartUpload request Valid values: CRC32 | CRC32C | SHA1 | SHA256 | CRC64NVME | No | text |
x-amz-server-side-encryption-customer-algorithm | Specifies the algorithm to use when encrypting the object (e.g., AES256) | No | text |
x-amz-server-side-encryption-customer-key | Customer-provided encryption key for Amazon S3 to use in encrypting data. Must be the same key specified in the initiate multipart upload request | No | text |
x-amz-server-side-encryption-customer-key-MD5 | MD5 digest of the encryption key according to RFC 1321 | No | text |
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
Name | Description | Required | Type |
---|---|---|---|
x-amz-id-2 | An identifier for the request | No | String |
x-amz-request-id | A unique identifier for the request | No | String |
Date | The date and time at which the response was sent | No | String |
ETag | Entity tag that identifies the uploaded part's data | No | String |
x-amz-checksum-crc32 | The Base64 encoded, 32-bit CRC32 checksum of the object. For multipart uploads, this is calculated based on the checksum values of each individual part | No | String |
x-amz-checksum-crc32c | The Base64 encoded, 32-bit CRC32C checksum of the object. For multipart uploads, this is calculated based on the checksum values of each individual part | No | String |
x-amz-checksum-crc64nvme | The Base64 encoded, 64-bit CRC64NVME checksum of the part. Used to verify data integrity | No | String |
x-amz-checksum-sha1 | The Base64 encoded, 160-bit SHA1 digest of the object. For multipart uploads, this is calculated based on the checksum values of each individual part | No | String |
x-amz-checksum-sha256 | The Base64 encoded, 256-bit SHA256 digest of the object. For multipart uploads, this is calculated based on the checksum values of each individual part | No | String |
x-amz-request-charged | If present, indicates that the requester was successfully charged for the request Valid values: requester | No | String |
x-amz-server-side-encryption | The server-side encryption algorithm used when storing this object in Amazon S3 Valid values: AES256 | verenc | No | String |
x-amz-server-side-encryption-aws-kms-key-id | If present, indicates the ID of the KMS key that was used for object encryption | No | String |
x-amz-server-side-encryption-bucket-key-enabled | Indicates whether the multipart upload uses an S3 Bucket Key for server-side encryption with QKMS keys (SSE-KMS) | No | String |
x-amz-server-side-encryption-customer-algorithm | If server-side encryption with a customer-provided encryption key was requested, confirms the encryption algorithm used | No | String |
x-amz-server-side-encryption-customer-key-MD5 | If server-side encryption with a customer-provided encryption key was requested, provides round-trip message integrity verification | No | String |
Special Errors
Error Code | Description |
---|---|
NoSuchBucket | The specified bucket does not exist |
NoSuchUpload | The specified multipart upload does not exist |
InvalidRequest | The request is not valid with the current state of the multipart upload |
EntityTooSmall | The part size is smaller than the minimum allowed size (5 MB) |
InvalidDigest | The Content-MD5 you specified did not match what we received |
403 | Forbidden. 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.