详情页标题前

腾讯云对象存储下载对象

详情页1

简介

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

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

SDK API 参考

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

高级接口(推荐)

下载对象(断点续传)

高级接口支持暂停、恢复以及取消下载请求,同时支持断点下载功能。说明.NET Framework 4.0 及以下的用户,高级接口暂不可用,详见 向下兼容指南高级下载接口从 5.4.26 版本开始支持并发分块下载,下载新版 SDK 前往 Releases 或参见 快速入门

示例代码一: 下载对象

//: # “.cssg-snippet-transfer-download-object”

using COSXML.Model.Object;using COSXML.Auth;using COSXML.Transfer;using System;using COSXML;using System.Threading.Tasks;
namespace COSSnippet{ public class TransferDownloadObjectModel {
private CosXml cosXml;
TransferDownloadObjectModel() { CosXmlConfig config = new CosXmlConfig.Builder() .SetRegion("COS_REGION") // 设置默认的地域, COS 地域的简称请参照 https://cloud.tencent.com/document/product/436/6224 .Build();
string secretId = "SECRET_ID"; // 云 API 密钥 SecretId, 获取 API 密钥请参照 https://console.cloud.tencent.com/cam/capi string secretKey = "SECRET_KEY"; // 云 API 密钥 SecretKey, 获取 API 密钥请参照 https://console.cloud.tencent.com/cam/capi long durationSecond = 600; //每次请求签名有效时长,单位为秒 QCloudCredentialProvider qCloudCredentialProvider = new DefaultQCloudCredentialProvider(secretId, secretKey, durationSecond);
this.cosXml = new CosXmlServer(config, qCloudCredentialProvider); }
/// 高级接口下载对象 public async Task TransferDownloadObject() { // 初始化 TransferConfig TransferConfig transferConfig = new TransferConfig(); // 手动设置高级下载接口的分块阈值为 20MB(默认为20MB), 从5.4.26版本开始支持! //transferConfig.DivisionForDownload = 20 * 1024 * 1024; // 手动设置高级下载接口的分块大小为 10MB(默认为5MB),不建议此处设置过小的分块值,可能导致频繁重试或下载速度不合预期 //transferConfig.SliceSizeForDownload = 10 * 1024 * 1024;
// 初始化 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);
// 手动设置高级下载接口的并发数 (默认为5), 从5.4.26版本开始支持! //downloadTask.SetMaxTasks(10); 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 (COSXML.CosException.CosClientException clientEx) { //请求失败 Console.WriteLine("CosClientException: " + clientEx); } catch (COSXML.CosException.CosServerException serverEx) { //请求失败 Console.WriteLine("CosServerException: " + serverEx.GetInfo()); } }

static void Main(string[] args) { TransferDownloadObjectModel m = new TransferDownloadObjectModel();
/// 高级接口下载对象 m.TransferDownloadObject().Wait(); } }}

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

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

//: # “.cssg-snippet-transfer-download-resumable”

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 查看。

示例代码三: 批量下载

//: # “.cssg-snippet-transfer-batch-download-objects”

TransferConfig transferConfig = new TransferConfig();
// 初始化 TransferManagerTransferManager transferManager = new TransferManager(cosXml, transferConfig);
// 存储桶名称,此处填入格式必须为 bucketname-APPID, 其中 APPID 获取参考 https://console.cloud.tencent.com/developerstring bucket = "examplebucket-1250000000";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 查看。

示例代码四:单链接限速下载

//: # “.cssg-snippet-transfer-download-objects-with-speed-limit”

TransferConfig transferConfig = new TransferConfig();
// 初始化 TransferManagerTransferManager transferManager = new TransferManager(cosXml, transferConfig);
String bucket = "examplebucket-1250000000"; //存储桶,格式:BucketName-APPIDString cosPath = "exampleobject"; //对象在存储桶中的位置标识符,即称对象键string localDir = System.IO.Path.GetTempPath();//本地文件夹string localFileName = "my-local-temp-file"; //指定本地保存的文件名
GetObjectRequest request = new GetObjectRequest(bucket, cosPath, localDir, localFileName);request.LimitTraffic(8 * 1000 * 1024); // 限制为1MB/s
COSXMLDownloadTask downloadTask = new COSXMLDownloadTask(request);await transferManager.DownloadAsync(downloadTask);

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

示例代码五:文件夹下载

//: # “.cssg-snippet-transfer-download-objects-from-folder”

using COSXML.Common;using COSXML.CosException;using COSXML.Model;using COSXML.Model.Object;using COSXML.Model.Tag;using COSXML.Model.Bucket;using COSXML.Model.Service;using COSXML.Utils;using COSXML.Auth;using COSXML.Transfer;using System;using COSXML;using System.Collections.Generic;using System.IO;using System.Linq;using System.Reflection;using System.Text;using System.Threading;using System.Threading.Tasks;
namespace COSSnippet{ public class TransferDownloadObjectModel {
private CosXml cosXml; private string nextMarker;
TransferDownloadObjectModel() { CosXmlConfig config = new CosXmlConfig.Builder() .SetRegion("COS_REGION") // 设置默认的地域, COS 地域的简称请参照 https://cloud.tencent.com/document/product/436/6224 .Build();
string secretId = "SECRET_ID"; // 云 API 密钥 SecretId, 获取 API 密钥请参照 https://console.cloud.tencent.com/cam/capi string secretKey = "SECRET_KEY"; // 云 API 密钥 SecretKey, 获取 API 密钥请参照 https://console.cloud.tencent.com/cam/capi long durationSecond = 600; //每次请求签名有效时长,单位为秒 QCloudCredentialProvider qCloudCredentialProvider = new DefaultQCloudCredentialProvider(secretId, secretKey, durationSecond);
this.cosXml = new CosXmlServer(config, qCloudCredentialProvider); }
public void GetObjectsFromFolder() { // 注意:COS中实际不存在文件夹下载的接口 // 需要通过组合 “指定前缀列出” 和 “遍历列出的对象key做下载” 两种操作,实现类似文件夹下载的操作 // 下面的操作,把对象列出到列表里,然后异步下载列表中的对象 String nextMarker = null;
List downloadList = new List(); string bucket = "examplebucket-1250000000"; string prefix = "folder1/"; //指定前缀 // 循环请求直到没有下一页数据 do { // 存储桶名称,此处填入格式必须为 bucketname-APPID, 其中 APPID 获取参考 https://console.cloud.tencent.com/developer GetBucketRequest listRequest = new GetBucketRequest(bucket); //获取 folder1/ 下的所有对象以及子目录 listRequest.SetPrefix(prefix); listRequest.SetMarker(nextMarker); //执行列出对象请求 GetBucketResult listResult = cosXml.GetBucket(listRequest); ListBucket info = listResult.listBucket; // 对象列表 List objects = info.contentsList; // 下一页的下标 nextMarker = info.nextMarker;
//对象列表 foreach (var content in objects) { downloadList.Add(content.key); Console.WriteLine("adding key:" + content.key); } } while (nextMarker != null); Console.WriteLine("download list construct done, " + downloadList.Count + " objects added");
TransferConfig transferConfig = new TransferConfig(); TransferManager transferManager = new TransferManager(cosXml, transferConfig); string localDir = System.IO.Path.GetTempPath();//本地文件夹
List taskList = new List(); for (int i = 0; i < downloadList.Count; i++) { // 遍历待下载列表,下载内容写到 filename_i 文件中 COSXMLDownloadTask downloadTask = new COSXMLDownloadTask(bucket, downloadList[i], localDir, "filename_" + i.ToString()); // 异步下载, 加入task队列 Task task = transferManager.DownloadAsync(downloadTask); taskList.Add(task); } Console.WriteLine("download tasks submitted, total " + taskList.Count + " tasks added");
//等待TaskList中所有Task结束 foreach(Task task in taskList) { task.Wait(); Console.WriteLine("download completed"); } }
static void Main(string[] args) { TransferDownloadObjectModel m = new TransferDownloadObjectModel(); /// 批量下载文件夹中文件 m.GetObjectsFromFolder(); } }}

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

示例代码六: 下载暂停、继续与取消

对于下载任务,可以通过以下方式暂停:

downloadTask.Pause();

暂停之后,可以通过以下方式续传:

downloadTask.Resume();

也通过以下方式取消上传:

downloadTask.Cancel();

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

简单操作

下载对象

功能说明

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

示例代码一:单对象简单下载

using COSXML.Model.Object;using COSXML.Auth;using System;using COSXML;
namespace COSSnippet{ public class GetObjectModel {
private CosXml cosXml;
GetObjectModel() { CosXmlConfig config = new CosXmlConfig.Builder() .SetRegion("COS_REGION") // 设置默认的地域, COS 地域的简称请参照 https://cloud.tencent.com/document/product/436/6224 .Build();
string secretId = "SECRET_ID"; // 云 API 密钥 SecretId, 获取 API 密钥请参照 https://console.cloud.tencent.com/cam/capi string secretKey = "SECRET_KEY"; // 云 API 密钥 SecretKey, 获取 API 密钥请参照 https://console.cloud.tencent.com/cam/capi long durationSecond = 600; //每次请求签名有效时长,单位为秒 QCloudCredentialProvider qCloudCredentialProvider = new DefaultQCloudCredentialProvider(secretId, secretKey, durationSecond);
this.cosXml = new CosXmlServer(config, qCloudCredentialProvider); }
/// 下载对象 public void GetObject() { //.cssg-snippet-body-start:[get-object] try { // 存储桶名称,此处填入格式必须为 bucketname-APPID, 其中 APPID 获取参考 https://console.cloud.tencent.com/developer string bucket = "examplebucket-1250000000"; 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()); } }
static void Main(string[] args) { GetObjectModel m = new GetObjectModel(); /// 下载对象 m.GetObject(); } }}

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

示例代码二:下载对象到内存中

using COSXML.Model.Object;using COSXML.Auth;using System;using COSXML;
namespace COSSnippet{ public class GetObjectModel {
private CosXml cosXml;
GetObjectModel() { CosXmlConfig config = new CosXmlConfig.Builder() .SetRegion("COS_REGION") // 设置默认的地域, COS 地域的简称请参照 https://cloud.tencent.com/document/product/436/6224 .Build();
string secretId = "SECRET_ID"; // 云 API 密钥 SecretId, 获取 API 密钥请参照 https://console.cloud.tencent.com/cam/capi string secretKey = "SECRET_KEY"; // 云 API 密钥 SecretKey, 获取 API 密钥请参照 https://console.cloud.tencent.com/cam/capi long durationSecond = 600; //每次请求签名有效时长,单位为秒 QCloudCredentialProvider qCloudCredentialProvider = new DefaultQCloudCredentialProvider(secretId, secretKey, durationSecond);
this.cosXml = new CosXmlServer(config, qCloudCredentialProvider); }
/// 下载返回 bytes 数据 public void downloadToMem() { try { // 存储桶名称,此处填入格式必须为 bucketname-APPID, 其中 APPID 获取参考 https://console.cloud.tencent.com/developer string bucket = "examplebucket-1250000000"; string key = "exampleobject"; //对象键
GetObjectBytesRequest request = new GetObjectBytesRequest(bucket, key); //设置进度回调 request.SetCosProgressCallback(delegate (long completed, long total) { Console.WriteLine(String.Format("progress = {0:##.##}%", completed * 100.0 / total)); }); //执行请求 GetObjectBytesResult result = cosXml.GetObject(request); //获取内容到 byte 数组中 byte[] content = result.content; //请求成功 Console.WriteLine(result.GetResultInfo()); } catch (COSXML.CosException.CosClientException clientEx) { //请求失败 Console.WriteLine("CosClientException: " + clientEx); } catch (COSXML.CosException.CosServerException serverEx) { //请求失败 Console.WriteLine("CosServerException: " + serverEx.GetInfo()); } }
// .cssg-methods-pragma
static void Main(string[] args) { GetObjectModel m = new GetObjectModel();
/// 下载对象到内存中 m.downloadToMem(); // .cssg-methods-pragma } }}

说明 更多完整示例,请前往 GitHub 查看。
对象存储官网1折活动,限时活动,即将结束,速速收藏
同尘科技腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利。同意关联立享优惠

转转请注明出处:https://www.yunxiaoer.com/145516.html

(0)
上一篇 2023年12月9日
下一篇 2023年12月9日
详情页2

相关推荐

  • 腾讯云原生分布式云中心购买指南同尘

    云原生分布式云中心(Tencent Kubernetes Engine Distributed Cloud Center, TDCC)服务目前正在内测中,如需使用请提交 内测申请,审核通过后,即可使用产品,如有其他问题,可以 联系我们 进行咨询。您理解并同意,在上述申请审核通过后,您可以免费使用云原生分布式云中心服务,即目前您开通或使用本服务,并不需向腾讯云…

    腾讯云 2023年12月9日
  • 视觉智能平台人脸数据库不是免费的嘛?-云小二-阿里云

    人脸数据库不是免费的嘛 以下为热心网友提供的参考意见 视觉智能开放平台创建人脸数据库是免费的。只有调用人脸搜索接口才会计费。 以下为热心网友提供的参考意见 您好,视觉智能开放平台创建人脸数据库以及添加人脸样本数据、添加人脸数据的服务都是免费的。也就人脸搜索1:N能力中仅人脸搜索(SearchFace)接口收费,其他接口可免费调用另外每个阿里云账号可以创建10…

    2023年12月11日
  • 腾讯云对象存储设置监控告警

    简介 您可以通过腾讯云可观测平台的告警策略来设置 COS 监控指标的阈值告警,腾讯云可观测平台是一项对云产品资源实时监控和告警的服务,用户可通过腾讯云可观测平台对 COS 的监控指标设置告警规则、查看告警历史、接收告警通知。关于腾讯云可观测平台的更多介绍,请参见 腾讯云可观测平台告警策略。 操作步骤 1. 登录 对象存储控制台,单击左侧导航栏中的概览,找到告…

    2023年12月9日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云日志服务SLS通过Unity Plugin接入数据-云淘科技

    本文介绍如何通过Unity Plugin将Unity平台的移动端游戏App的崩溃数据、应用数据接入到日志服务移动运维监控中。移动运维监控用于实时监控游戏崩溃、ANR等问题,并且支持智能分析,帮助您低成本、高效率地发现App中的各类隐患。 前提条件 已创建移动运维监控应用。具体操作,请参见添加应用。 步骤一:集成SDK 下载最新版本Unity Plugin。 …

    阿里云日志服务SLS 2023年12月10日
  • 腾讯云TDSQL-C MySQL版授权子用户使用功能

    本文为您介绍通过主账号为子用户授权使用自定义密码强度功能。 操作场景 您的主账号具有自定义密码强度功能的全部权限,无需额外设置,在默认情况下,子用户是没有该功能权限的,因此您需要创建策略来允许子用户使用自定义密码强度功能。访问管理(Cloud Access Management,CAM)是腾讯云提供的一套 Web 服务,主要用于帮助用户安全管理腾讯云账号下资…

    2023年12月9日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。