Stay organized with collections Save and categorize content based on your preferences.
Uploads a part of a multipart upload. Returns an ETag which must be used when completing the multipart upload.
To ensure that data is not corrupted, you should specify a Content-MD5
header or a x-goog-hash
header in the request so that Cloud Storage can check the uploaded data against the provided value.
Uploaded parts are not included in requests to list objects in the bucket, but uploaded parts are charged for storage and early deletion as if they were objects.
See Quotas & limits for limits associated with multipart uploads, including limits on part size and number of parts. For tips on uploading to Cloud Storage, see Best Practices.
Query string parameters Parameter Description RequiredpartNumber
Uniquely identifies the position of the part within the larger multipart upload. partNumber
is an integer with a mimimum value of 1 and a maximum value of 10,000. Yes uploadId
Indicates the multipart upload that this part is associated with. Yes
See signed URL query string parameters for information on the parameters you include when creating and using signed URLs.
In addition to common request headers, the following can be used.
Header Description Requiredx-goog-hash
An MD5 and/or CRC32C base64-encoded checksum of the part data. No
If you specified a customer-supplied encryption key in the request to initiate the multipart upload, you must use the same headers and values in each part upload.
Request body elementsThe request body contains the data for the part being uploaded.
Request syntaxThe following syntax applies to PUT Object requests that use the uploadId
query string parameter.
PUT /OBJECT_NAME?partNumber=PART_NUMBER&uploadId=UPLOAD_ID HTTP/1.1 Host: BUCKET_NAME.storage.googleapis.com Date: DATE Content-Length: REQUEST_BODY_LENGTH Content-MD5: MD5_DIGEST Authorization: AUTHENTICATION_STRING x-goog-hash: MD5_DIGEST
Included in the response headers are x-goog-hash
headers that specify the CRC32C and MD5 base64-encoded checksums of the uploaded part.
The response also includes an ETag
header that must be used in the final request to complete the multipart upload.
The response does not include an XML document in the response body.
ExampleThe following sample uploads the first part of an object named paris.jpg
to a bucket named travel-maps
.
Request
PUT /paris.jpg?partNumber=1&uploadId=VXBsb2FkIElEIGZvciBlbHZpbmcncyBteS1tb3ZpZS5tMnRzIHVwbG9hZA HTTP/1.1 Host: travel-maps.storage.googleapis.com Date: Wed, 31 Mar 2021 16:31:08 GMT Content-Length: 100000000 Content-MD5: Ojk9c3dhfxgoKVVHYwFbHQ== Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg ***part data omitted***
Response
HTTP/1.1 200 OK Date: Wed, 31 Mar 2021 20:34:56 GMT ETag: "39a59594290b0f9a30662a56d695b71d" Content-Length: 0 Server: UploadServer x-goog-hash: crc32c=n03x6A== x-goog-hash: md5=Ojk9c3dhfxgoKVVHYwFbHQ==Common error codes
If the supplied MD5 digest is malformed, you get a 400 Bad Request status code and the body of the error response has InvalidDigest
in the Code
element.
If the digest does not match the digest we compute from the body, you get a 400 Bad Request status code and the body of the error response has BadDigest
in the Code
element.
If one of the parts specified in the request is more than 5 GiB, you get a 400 Bad Request status code and the body of the error response has EntityTooLarge
in the Code
element.
If the uploadId
specified in the request is invalid or applies to a multipart upload that has already been completed or aborted, you get a 404 Not Found status code and the body of the error response has NoSuchUpload
in the Code
element.
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-08-07 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-07 UTC."],[],[]]
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4