下载对象

最后更新时间:2021-10-22 17:24:20

    简介

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

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

    SDK API 参考

    SDK 所有接口的具体参数与方法说明,请参考 SDK API

    高级接口(推荐)

    下载对象(断点续传)

    高级接口支持暂停、恢复以及取消下载请求,同时支持断点下载功能。

    说明:

    .NET Framework 4.0 及以下的用户,高级接口暂不可用,详见向下兼容指南。

    示例代码一: 下载对象

    // 初始化 TransferConfig
    TransferConfig transferConfig = new TransferConfig();
    // 初始化 TransferManager
    TransferManager transferManager = new TransferManager(cosXml, transferConfig);
    String bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
    String cosPath = "exampleobject"; //对象在存储桶中的位置标识符,即称对象键
    string localDir = System.IO.Path.GetTempPath();//本地文件夹
    string localFileName = "my-local-temp-file"; //指定本地保存的文件名
    // 下载对象
    COSXMLDownloadTask downloadTask = new COSXMLDownloadTask(bucket, cosPath, 
    localDir, localFileName);
    downloadTask.progressCallback = delegate (long completed, long total)
    {
      Console.WriteLine(String.Format("progress = {0:##.##}%", completed * 100.0 / total));
    };
    try {
    COSXML.Transfer.COSXMLDownloadTask.DownloadTaskResult result = await 
      transferManager.DownloadAsync(downloadTask);
    Console.WriteLine(result.GetResultInfo());
    string eTag = result.eTag;
    } catch (Exception e) {
      Console.WriteLine("CosException: " + e);
    }
    
    说明:

    更多完整示例,请前往 GitHub 查看。

    示例代码二: 设置下载支持断点续传

    COSXMLDownloadTask downloadTask = new COSXMLDownloadTask(request);
    //开启断点续传,当本地存在未下载完成文件时,追加下载到文件末尾
    //本地文件已存在部分不符合本次下载的内容,可能导致下载失败,请删除文件重试
    downloadTask.SetResumableDownload(true);
    try {
     COSXML.Transfer.COSXMLDownloadTask.DownloadTaskResult result = await 
     transferManager.DownloadAsync(downloadTask);
     Console.WriteLine(result.GetResultInfo());
     string eTag = result.eTag;
    } catch (Exception e) {
     Console.WriteLine("CosException: " + e);
    }
    
    说明:

    更多完整示例,请前往 GitHub 查看。

    示例代码三: 批量下载

    TransferConfig transferConfig = new TransferConfig();
    // 初始化 TransferManager
    TransferManager transferManager = new TransferManager(cosXml, transferConfig);
    string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
    string localDir = System.IO.Path.GetTempPath();//本地文件夹
    for (int i = 0; i < 5; i++) {
    // 下载对象
    string cosPath = "exampleobject" + i; //对象在存储桶中的位置标识符,即称对象键
    string localFileName = "my-local-temp-file"; //指定本地保存的文件名
    COSXMLDownloadTask downloadTask = new COSXMLDownloadTask(bucket, cosPath, 
      localDir, localFileName);
    await transferManager.DownloadAsync(downloadTask);
    }
    
    说明:

    更多完整示例,请前往 GitHub 查看。

    简单操作

    下载对象

    功能说明

    下载一个 Object(文件/对象)至本地(GET Object)。

    示例代码

    try
    {
    string bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPID
    string key = "exampleobject"; //对象键
    string localDir = System.IO.Path.GetTempPath();//本地文件夹
    string localFileName = "my-local-temp-file"; //指定本地保存的文件名
    GetObjectRequest request = new GetObjectRequest(bucket, key, localDir, localFileName);
    //设置进度回调
    request.SetCosProgressCallback(delegate (long completed, long total)
    {
      Console.WriteLine(String.Format("progress = {0:##.##}%", completed * 100.0 / total));
    });
    //执行请求
    GetObjectResult result = cosXml.GetObject(request);
    //请求成功
    Console.WriteLine(result.GetResultInfo());
    }
    catch (COSXML.CosException.CosClientException clientEx)
    {
    //请求失败
    Console.WriteLine("CosClientException: " + clientEx);
    }
    catch (COSXML.CosException.CosServerException serverEx)
    {
    //请求失败
    Console.WriteLine("CosServerException: " + serverEx.GetInfo());
    }
    
    说明:

    更多完整示例,请前往 GitHub 查看。