控制台指南

最佳实践

开发者指南

API 文档

SDK 文档

下载对象

最近更新时间:2021-09-16 11:20:57

简介

本文档提供关于对象的下载操作相关的 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 查看。

目录