By default, when you call the GetObject operation to download an object in a versioned bucket, only the current version of the object is returned.

When you call the GetObject operation to download an object in a bucket, the returned result is different based on the actual scenarios:
  • If the current version of the object is a delete marker, Object Storage Service (OSS) returns 404 Not Found.
  • If the version ID of the object is specified in the request, OSS returns the specified version of the object. If the version ID is set to null in the request, OSS returns the version whose version ID is null.
  • If the version ID specified in the request is the version ID of a delete marker, OSS returns 405 Method Not Allowed.

Examples

The following code provides an example on how to download an object:

# -*- coding: utf-8 -*-
import oss2
# The AccessKey pair of an Alibaba Cloud account has permissions on all API operations. Using these credentials to perform operations in OSS is a high-risk operation. We recommend that you use a RAM user to call API operations or perform routine O&M. To create a RAM user, log on to the RAM console. 
auth = oss2.Auth('yourAccessKeyId', 'yourAccessKeySecret')
# Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. 
# Set yourBucketName to the name of your bucket. 
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'yourBucketName')

# Download a specified version of the object. 
params = dict()
params['versionId'] = '<yourObjectVersionId>'
object_stream = bucket.get_object('<yourObjectName>', params=params)

# Read the content of the downloaded object. 
read_content = object_stream.read()
print('get object content:', read_content)
# Display the version ID of the downloaded object. 
print('get object versionid:', object_stream.versionid)

# You must call read() to read the object from the stream returned by get_object before you can calculate the CRC-64 checksum of the object. 
if object_stream.client_crc != object_stream.server_crc:
   print "The CRC checksum between client and server is inconsistent!"

References

For more information about the API operation that you can call to download an object, see GetObject.