tencent cloud

All product documents
Cloud Object Storage
Downloading Objects
Last updated: 2024-02-04 14:25:57
Downloading Objects
Last updated: 2024-02-04 14:25:57

Overview

This document provides an overview of APIs and SDK code samples for downloading an object.
API
Operation
Description
Downloading an object
Downloads an object to the local file system.

Advanced APIs (Recommended)

Downloading an object (checkpoint restart)

Feature description

This API is used to download an object. It calls the GET Object API to download a small file in whole and a large file by byte range. For the parameters required, see those of the GET Object API.

Method prototype

public Qcloud\Cos\Client download(string $bucket, string $key, string $saveAs, array $options = array());
Parameter
Type
Description
Required
bucket
String
Bucket name in the format of BucketName-APPID
Yes
key
String
Object key
Yes
saveAs
String
Local path to save the file
Yes
options
Array
Additional configuration items
No
options Parameter
Type
Description
Required
Progress
Function
Progress callback. $totalSize indicates the total size, and $downloadedSize indicates the downloaded size.
No
PartSize
Int
Minimum part size. Default value: 5 MB
No
Concurrency
Int
Concurrency. Default value: 10
No
ResumableDownload
Bool
Whether to enable checkpoint restart. Default value: False
No
ResumableTaskFile
String
Checkpoint file path. Default value: <saveAs.cosresumabletask>
No

Sample request

<?php

require dirname(__FILE__) . '/../vendor/autoload.php';

$secretId = "SECRETID"; //Replace it with the actual `SecretId`, which can be viewed and managed in the CAM console at https://console.cloud.tencent.com/cam/capi
$secretKey = "SECRETKEY"; //Replace it with the actual `SecretKey`, which can be viewed and managed in the CAM console at https://console.cloud.tencent.com/cam/capi
$region = "ap-beijing"; //Replace it with the actual `region`, which can be viewed in the console at https://console.cloud.tencent.com/cos5/bucket
$cosClient = new Qcloud\Cos\Client(
array(
'region' => $region,
'schema' => 'https', // Protocol header, which is http by default
'credentials'=> array(
'secretId' => $secretId ,
'secretKey' => $secretKey)));
$local_path = "/Users/xxx/Desktop/exampleobject.txt"; //Save it to the user’s local path

$printbar = function($totalSize, $downloadedSize) {
printf("downloaded [%d/%d]\n", $downloadedSize, $totalSize);
};

try {
$result = $cosClient->download(
$bucket = 'examplebucket-1250000000', // Bucket name in the format of `BucketName-APPID`, which can be viewed in the COS console at https://console.cloud.tencent.com/cos5/bucket
$key = 'exampleobject',
$saveAs = $local_path,
$options= array(
'Progress' => $printbar, // Specify the progress
'PartSize' => 10 * 1024 * 1024, //Part size
'Concurrency' => 5, //Number of concurrent parts
'ResumableDownload' => true, //Whether to enable checkpoint restart. It’s disabled by default.
'ResumableTaskFile' => 'tmp.cosresumabletask' //Checkpoint file path. Default value: `<localpath>.cosresumabletask`
)
);
// Request succeeded
print_r($result);
} catch (\Exception $e) {
// Request failed
echo($e);
}

Batch downloading files (downloading a COS directory)

Feature description

This API is used to download a COS directory and the files in it to the local disk.

Sample request

<?php

require dirname(__FILE__) . '/../vendor/autoload.php';

$secretId = "SECRETID"; //Replace it with the actual `SecretId`, which can be viewed and managed in the CAM console at https://console.cloud.tencent.com/cam/capi
$secretKey = "SECRETKEY"; //Replace it with the actual `SecretKey`, which can be viewed and managed in the CAM console at https://console.cloud.tencent.com/cam/capi
$region = "ap-beijing"; //Replace it with the actual `region`, which can be viewed in the console at https://console.cloud.tencent.com/cos5/bucket
$cosClient = new Qcloud\Cos\Client(
array(
'region' => $region,
'schema' => 'https', // Protocol header, which is http by default
'credentials'=> array(
'secretId' => $secretId ,
'secretKey' => $secretKey)));

$cos_path = 'cos/folder';
$nextMarker = '';
$isTruncated = true;

while ($isTruncated) {
try {
$result = $cosClient->listObjects(array(
'Bucket' => 'examplebucket-125000000', // Bucket name in the format of `BucketName-APPID`, which can be viewed in the COS console at https://console.cloud.tencent.com/cos5/bucket
'Delimiter' => '/', //Delimiter: "/". Set the delimiter to "/" to list objects in the current directory. To list all objects, leave this parameter empty.
'EncodingType' => 'url',// Encoding format, which indicates the `encoding-type` in requests
'Marker' => 'prefix/picture.jpg',//Identifier of the initial object key
'Prefix' => 'prfix/', //Set a prefix to indicate that the key of the listed object starts with the prefix.
'MaxKeys' => 1000, // Set the maximum number of traversed objects (up to 1000 per `listObjects` request).
));
} catch (\Exception $e) {
echo($e);
}
$isTruncated = $result['IsTruncated'];
$nextMarker = $result['NextMarker'];
foreach ( $result['Contents'] as $content ) {
$cos_file_path = $content['Key'];
$local_file_path = $content['Key'];
// Splice a download path as needed
try {
$result = $cosClient->download(
$bucket = 'examplebucket-1250000000', //Bucket name in the format of `BucketName-APPID`, which can be viewed in the COS console at https://console.cloud.tencent.com/cos5/bucket
$key = $cos_file_path,
$saveAs = $local_file_path
);
echo ($cos_file_path . "\n");
} catch ( \Exception $e ) {
echo($e);
}
}
}

Simple Download

Downloading an object

Feature description

This API (GET Object) is used to download an object.

Method prototype

public Guzzle\Service\Resource\Model getObject(array $args = array());

Sample request

Sample 1. Downloading a file

<?php

require dirname(__FILE__) . '/../vendor/autoload.php';

$secretId = "SECRETID"; //Replace it with the actual `SecretId`, which can be viewed and managed in the CAM console at https://console.cloud.tencent.com/cam/capi
$secretKey = "SECRETKEY"; //Replace it with the actual `SecretKey`, which can be viewed and managed in the CAM console at https://console.cloud.tencent.com/cam/capi
$region = "ap-beijing"; //Replace it with the actual `region`, which can be viewed in the console at https://console.cloud.tencent.com/cos5/bucket
$cosClient = new Qcloud\Cos\Client(
array(
'region' => $region,
'schema' => 'https', //Protocol header, which is http by default
'credentials'=> array(
'secretId' => $secretId ,
'secretKey' => $secretKey)));
$local_path = "/Users/xxx/Desktop/exampleobject.txt"; //Save it to the user’s local path

try {
$result = $cosClient->getObject(array(
'Bucket' => 'examplebucket-1250000000', // Bucket name in the format of `BucketName-APPID`, which can be viewed in the COS console at https://console.cloud.tencent.com/cos5/bucket
'Key' => 'exampleobject',
'SaveAs' => $local_path,
));
// Request succeeded
} catch (\Exception $e) {
// Request failed
echo($e);
}

Sample 2. Getting file content within a certain byte range

<?php

require dirname(__FILE__) . '/../vendor/autoload.php';

$secretId = "SECRETID"; //Replace it with the actual `SecretId`, which can be viewed and managed in the CAM console at https://console.cloud.tencent.com/cam/capi
$secretKey = "SECRETKEY"; //Replace it with the actual `SecretKey`, which can be viewed and managed in the CAM console at https://console.cloud.tencent.com/cam/capi
$region = "ap-beijing"; //Replace it with the actual `region`, which can be viewed in the console at https://console.cloud.tencent.com/cos5/bucket
$cosClient = new Qcloud\Cos\Client(
array(
'region' => $region,
'schema' => 'https', // Protocol header, which is http by default
'credentials'=> array(
'secretId' => $secretId ,
'secretKey' => $secretKey)));

try {
$result = $cosClient->getObject(array(
'Bucket' => 'examplebucket-1250000000', // Bucket name in the format of `BucketName-APPID`, which can be viewed in the COS console at https://console.cloud.tencent.com/cos5/bucket
'Key' => 'exampleobject',
'Range' => 'bytes=0-10'
));
// Request succeeded
print_r($result);
} catch (\Exception $e) {
// Request failed
echo($e);
}

Sample 3. Downloading a specified version of a file

<?php

require dirname(__FILE__) . '/../vendor/autoload.php';

$secretId = "SECRETID"; //Replace it with the actual `SecretId`, which can be viewed and managed in the CAM console at https://console.cloud.tencent.com/cam/capi
$secretKey = "SECRETKEY"; //Replace it with the actual `SecretKey`, which can be viewed and managed in the CAM console at https://console.cloud.tencent.com/cam/capi
$region = "ap-beijing"; //Replace it with the actual `region`, which can be viewed in the console at https://console.cloud.tencent.com/cos5/bucket
$cosClient = new Qcloud\Cos\Client(
array(
'region' => $region,
'schema' => 'https', // Protocol header, which is http by default
'credentials'=> array(
'secretId' => $secretId ,
'secretKey' => $secretKey)));

try {
$result = $cosClient->getObject(array(
'Bucket' => 'examplebucket-1250000000', // Bucket name in the format of `BucketName-APPID`, which can be viewed in the COS console at https://console.cloud.tencent.com/cos5/bucket
'Key' => 'exampleobject',
'VersionId' => 'exampleVersionId'
));
// Request succeeded
print_r($result);
} catch (\Exception $e) {
// Request failed
echo($e);
}

Sample 4. Downloading an object (limiting single-connection bandwidth)

Note:
For more information about the speed limits on object downloads, see Single-Connection Bandwidth Limit.
<?php

require dirname(__FILE__) . '/../vendor/autoload.php';

$secretId = "SECRETID"; //Replace it with the actual `SecretId`, which can be viewed and managed in the CAM console at https://console.cloud.tencent.com/cam/capi
$secretKey = "SECRETKEY"; //Replace it with the actual `SecretKey`, which can be viewed and managed in the CAM console at https://console.cloud.tencent.com/cam/capi
$region = "ap-beijing"; //Replace it with the actual `region`, which can be viewed in the console at https://console.cloud.tencent.com/cos5/bucket
$cosClient = new Qcloud\Cos\Client(
array(
'region' => $region,
'schema' => 'https', // Protocol header, which is http by default
'credentials'=> array(
'secretId' => $secretId ,
'secretKey' => $secretKey)));

try {
$result = $cosClient->getObject(array(
'Bucket' => 'examplebucket-125000000', // Bucket name in the format of `BucketName-APPID`, which can be viewed in the COS console at https://console.cloud.tencent.com/cos5/bucket
'Key' => 'exampleobject',
'SaveAs' => '/data/exampleobject',
'TrafficLimit' => 8 * 1024 * 1024 // Limit the speed to 1 MB/s
));
// Request succeeded
print_r($result);
} catch (\Exception $e) {
// Request failed
echo($e);
}
Was this page helpful?
You can also Contact Sales or Submit a Ticket for help.
Yes
No

Feedback

Contact Us

Contact our sales team or business advisors to help your business.

Technical Support

Open a ticket if you're looking for further assistance. Our Ticket is 7x24 available.

7x24 Phone Support
Hong Kong, China
+852 800 906 020 (Toll Free)
United States
+1 844 606 0804 (Toll Free)
United Kingdom
+44 808 196 4551 (Toll Free)
Canada
+1 888 605 7930 (Toll Free)
Australia
+61 1300 986 386 (Toll Free)
EdgeOne hotline
+852 300 80699
More local hotlines coming soon