tencent cloud

文档反馈

下载对象

最后更新时间:2022-06-09 15:57:35

    简介

    本文档提供关于对象的下载操作相关的 API 概览以及 SDK 示例代码。

    API 操作名 操作描述
    GET Object 下载对象 下载一个对象至本地

    高级接口(推荐)

    下载对象(断点续传)

    功能说明

    该接口内部会根据文件大小,对小文件调用设置对象下载接口,对大文件采取并发 range 下载。接口参数可参照GET Object接口。

    方法原型

    public Qcloud\Cos\Client download(string $bucket, string $key, string $saveAs, array $options = array());
    
    参数名称 类型 描述 是否必填
    bucket String 存储桶名称,格式:BucketName-APPID
    key String 对象键
    saveAs String 保存的本地路径
    options Array 附加的配置项
    options 参数 类型 描述 是否必填
    Progress Function 进度条回调,参数为总大小($totalSize),已上传大小($downloadedSize)
    PartSize Int 最小分块文件大小,默认为5M
    Concurrency Int 并发度,默认为10
    ResumableDownload Bool 是否开启断点续传,默认为 False
    ResumableTaskFile String 断点文件路径。默认为<saveAs.cosresumabletask>

    请求示例

    <?php
    require dirname(__FILE__) . '/../vendor/autoload.php';
    $secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.intl.cloud.tencent.com/cam/capi
    $secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.intl.cloud.tencent.com/cam/capi
    $region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.intl.cloud.tencent.com/cos5/bucket
    $cosClient = new Qcloud\Cos\Client(
      array(
          'region' => $region,
          'schema' => 'https', //协议头部,默认为http
          'credentials'=> array(
              'secretId'  => $secretId ,
              'secretKey' => $secretKey)));
    $local_path = "/Users/xxx/Desktop/exampleobject.txt"; //保存到用户本地路径
    $printbar = function($totalSize, $downloadedSize) {
      printf("downloaded [%d/%d]\n", $downloadedSize, $totalSize);
    };
    try {
      $result = $cosClient->download(
          $bucket = 'examplebucket-1250000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.intl.cloud.tencent.com/cos5/bucket
          $key = 'exampleobject',
          $saveAs = $local_path,
          $options= array(
              'Progress' => $printbar, //指定进度条
              'PartSize' => 10 * 1024 * 1024, //分块大小
              'Concurrency' => 5, //并发数
              'ResumableDownload' => true, //是否开启断点续传,默认为false
              'ResumableTaskFile' => 'tmp.cosresumabletask' //断点文件信息路径,默认为<localpath>.cosresumabletask
          )
      );
      // 请求成功
      print_r($result);
    } catch (\Exception $e) {
      // 请求失败
      echo($e);
    }
    

    批量下载(从 COS 下载目录)

    功能说明

    将 COS 目录及其文件下载到本地磁盘。

    请求示例

    <?php
    require dirname(__FILE__) . '/../vendor/autoload.php';
    $secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.intl.cloud.tencent.com/cam/capi
    $secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.intl.cloud.tencent.com/cam/capi
    $region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.intl.cloud.tencent.com/cos5/bucket
    $cosClient = new Qcloud\Cos\Client(
      array(
          'region' => $region,
          'schema' => 'https', //协议头部,默认为http
          'credentials'=> array(
              'secretId'  => $secretId ,
              'secretKey' => $secretKey)));
    $cos_path = 'cos/folder';
    $nextMarker = '';
    $isTruncated = true;
    while ($isTruncated) {
      try {
          $result = $cosClient->listObjects(array(
                  'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.intl.cloud.tencent.com/cos5/bucket
                  'Delimiter' => '/', //Delimiter表示分隔符, 设置为/表示列出当前目录下的object, 设置为空表示列出所有的object
                  'EncodingType' => 'url',//编码格式,对应请求中的 encoding-type 参数
                  'Marker' => 'prefix/picture.jpg',//起始对象键标记
                  'Prefix' => 'prfix/', //Prefix表示列出的object的key以prefix开始
                  'MaxKeys' => 1000, // 设置最大遍历出多少个对象, 一次listObjects最大支持1000
          ));
      } 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'];
          // 按照需求自定义拼接下载路径
          try {
              $result = $cosClient->download(
                  $bucket = 'examplebucket-1250000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.intl.cloud.tencent.com/cos5/bucket
                  $key = $cos_file_path,
                  $saveAs = $local_file_path
              );
              echo ($cos_file_path . "\n");
          } catch ( \Exception $e ) {
              echo($e);
          }
      }
    }
    

    简单下载

    下载对象

    功能说明

    下载对象到本地(GET Object)。

    方法原型

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

    请求示例

    示例一:下载文件到本地

    <?php
    require dirname(__FILE__) . '/../vendor/autoload.php';
    $secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.intl.cloud.tencent.com/cam/capi
    $secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.intl.cloud.tencent.com/cam/capi
    $region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.intl.cloud.tencent.com/cos5/bucket
    $cosClient = new Qcloud\Cos\Client(
      array(
          'region' => $region,
          'schema' => 'https', //协议头部,默认为http
          'credentials'=> array(
              'secretId'  => $secretId ,
              'secretKey' => $secretKey)));
    $local_path = "/Users/xxx/Desktop/exampleobject.txt"; //保存到用户本地路径
    try {
      $result = $cosClient->getObject(array(
          'Bucket' => 'examplebucket-1250000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.intl.cloud.tencent.com/cos5/bucket
          'Key' => 'exampleobject',
          'SaveAs' => $local_path,
      )); 
      // 请求成功
    } catch (\Exception $e) {
      // 请求失败
      echo($e);
    }
    

    示例二:按照 range 获取文件内容

    <?php
    require dirname(__FILE__) . '/../vendor/autoload.php';
    $secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.intl.cloud.tencent.com/cam/capi
    $secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.intl.cloud.tencent.com/cam/capi
    $region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.intl.cloud.tencent.com/cos5/bucket
    $cosClient = new Qcloud\Cos\Client(
      array(
          'region' => $region,
          'schema' => 'https', //协议头部,默认为http
          'credentials'=> array(
              'secretId'  => $secretId ,
              'secretKey' => $secretKey)));
    try {
      $result = $cosClient->getObject(array(
          'Bucket' => 'examplebucket-1250000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.intl.cloud.tencent.com/cos5/bucket
          'Key' => 'exampleobject',
          'Range' => 'bytes=0-10'
      )); 
      // 请求成功
      print_r($result);
    } catch (\Exception $e) {
      // 请求失败
      echo($e);
    }
    

    示例三:下载指定版本的文件

    <?php
    require dirname(__FILE__) . '/../vendor/autoload.php';
    $secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.intl.cloud.tencent.com/cam/capi
    $secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.intl.cloud.tencent.com/cam/capi
    $region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.intl.cloud.tencent.com/cos5/bucket
    $cosClient = new Qcloud\Cos\Client(
      array(
          'region' => $region,
          'schema' => 'https', //协议头部,默认为http
          'credentials'=> array(
              'secretId'  => $secretId ,
              'secretKey' => $secretKey)));
    try {
      $result = $cosClient->getObject(array(
          'Bucket' => 'examplebucket-1250000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.intl.cloud.tencent.com/cos5/bucket
          'Key' => 'exampleobject',
          'VersionId' => 'exampleVersionId'
      )); 
      // 请求成功
      print_r($result);
    } catch (\Exception $e) {
      // 请求失败
      echo($e);
    }
    

    示例四:下载文件(单链接限速)

    说明:

    关于下载对象的限速说明,请参见 单链接限速

    <?php
    require dirname(__FILE__) . '/../vendor/autoload.php';
    $secretId = "SECRETID"; //替换为用户的 secretId,请登录访问管理控制台进行查看和管理,https://console.intl.cloud.tencent.com/cam/capi
    $secretKey = "SECRETKEY"; //替换为用户的 secretKey,请登录访问管理控制台进行查看和管理,https://console.intl.cloud.tencent.com/cam/capi
    $region = "ap-beijing"; //替换为用户的 region,已创建桶归属的region可以在控制台查看,https://console.intl.cloud.tencent.com/cos5/bucket
    $cosClient = new Qcloud\Cos\Client(
      array(
          'region' => $region,
          'schema' => 'https', //协议头部,默认为http
          'credentials'=> array(
              'secretId'  => $secretId ,
              'secretKey' => $secretKey)));
    try {
     $result = $cosClient->getObject(array(
          'Bucket' => 'examplebucket-125000000', //存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.intl.cloud.tencent.com/cos5/bucket
          'Key' => 'exampleobject',
          'SaveAs' => '/data/exampleobject',
          'TrafficLimit' => 8 * 1024 * 1024 // 限制为1MB/s
      ));
      // 请求成功
      print_r($result);
    } catch (\Exception $e) {
      // 请求失败
      echo($e);
    }
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持