Download an Object

Downloads an object.

GET requests for objects can include a Range header as defined in the HTTP 1.1 RFC to limit the scope of the returned data within the object, but be aware that in certain circumstances the range header is ignored.

Objects that are stored in Google Cloud Storage in a compressed state can be automatically decompressed as part of a download request when certain criteria are met. This transcoding behavior eliminates the need for a requester to decompress the object.

Requests can also include If-Modified-Since or If-Unmodified-Since headers, causing the response to omit the body if the object has not been modified, or has been modified, since a specified timestamp. If the object does not meet an If- Modified-Since header condition, the response is a 304 Not Modified, and if the object fails to meet an If-Unmodified-Since header condition, the response is 412 Precondition Failed.

Similarly, requests can include If-Match and If-None- Match headers with an ETag to match. If the object does not match an If-Match header condition, the response is 412 Precondition Failed, and if the object matches the given hash in an If-None-Match header, the response is 304 Not Modified.

Query string parameters

Parameter Description Required
generation You can use this if you want to fetch a specific object version. No
Expires Used for Signed URLs. No
GoogleAccessId Used for Signed URLs. No
Signature Used for Signed URLs. No

Request headers

In addition to common request headers, the following can be used.

Header Description Required
If-Match An entity tag (ETag). If the ETag you specify is the same as the ETag for the object, then the object is downloaded. No
If-Modified-Since A date and time. If the object has been modified later than the date and time you specify, then the object is downloaded. No
If-None-Match An entity tag (ETag). If the ETag you specify is different from the ETag for the object, then the object is downloaded. No
If-Unmodified-Since A date and time. If the object has not been modified later than the date you specify, then the object is downloaded. No
Range An object's range (in bytes) that you want to download.

Warning: The checksum(s) returned when downloading data from Cloud Storage cover the complete object content. Thus, if you specify a request range there's no way to detect data corruption for that byte range alone. We therefore recommend using range requests only for restarting the download of a full object after the last received offset, because in that case you can compute and validate the checksum when the full download completes.

No

To download an object encrypted by a customer-supplied encryption key, use the headers listed on the Encryption page in your request.

Request body elements

This request does not include an XML document in the request body.

Request syntax

The following syntax applies to GET Object requests that don't use the acl query string parameter.

GET /<object> HTTP/1.1
Host: <bucket>.storage.googleapis.com
Content-Length: <request body length>
Authorization: <authentication string>
Range: <bytes=byte range>
If-Match: <entity tag>
If-Modified-Since: <date>
If-None-Match: <entity tag>
If-Unmodified-Since: <date>

Response headers

The request can return a variety of response headers depending on the request headers you use, including: Cache-Control, Content-Length, Content-Type, Content-Disposition, ETag, and Last-Modified.

Response body elements

The response contains the object data.

Example

The following example downloads an object named paris.jpg that's in a bucket named travel-maps.

Request

GET /paris.jpg HTTP/1.1
Host: travel-maps.storage.googleapis.com
Content-Length: 0
Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg

Response

HTTP/1.1 200 OK
Content-Type: image/jpg
Last-Modified: Fri, 19 Feb 2010 22:13:49 GMT
ETag: "2281880ef78388266ecd7d4c1b472a0e"
Content-Length: 328
Date: Fri, 19 Feb 2010 22:13:49 GMT

328 bytes of data...

Send feedback about...

Cloud Storage Documentation