public static void Download(string bucket, string key, string localDir, string localFileName) { COSXMLDownloadTask downloadTask = new COSXMLDownloadTask(bucket, null, key, localDir, localFileName) { progressCallback = delegate(long completed, long total) { Console.WriteLine(String.Format("progress = {0} / {1} : {2:##.##}%", completed, total, completed * 100.0 / total)); }, successCallback = delegate(CosResult cosResult) { COSXML.Transfer.COSXMLDownloadTask.DownloadTaskResult result = cosResult as COSXML.Transfer.COSXMLDownloadTask.DownloadTaskResult; QLog.D("XIAO", result.GetResultInfo()); Console.WriteLine(result.GetResultInfo()); Console.WriteLine(String.Format("currentThread id = {0}", Thread.CurrentThread.ManagedThreadId)); }, failCallback = delegate(CosClientException clientEx, CosServerException serverEx) { if (clientEx != null) { QLog.D("XIAO", clientEx.Message); Console.WriteLine("CosClientException: " + clientEx.StackTrace); } if (serverEx != null) { QLog.D("XIAO", serverEx.Message); Console.WriteLine("CosServerException: " + serverEx.GetInfo()); } Console.WriteLine(String.Format("currentThread id = {0}", Thread.CurrentThread.ManagedThreadId)); } }; transferManager.Download(downloadTask); }
public void testDownloadTask() { long now = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds(); GetObjectRequest request = new GetObjectRequest(bucket, commonKey, localDir, localFileName); request.LimitTraffic(8 * 1000 * 1024); //执行请求 COSXMLDownloadTask downloadTask = new COSXMLDownloadTask(request); var autoEvent = new AutoResetEvent(false); downloadTask.progressCallback = delegate(long completed, long total) { Console.WriteLine(String.Format("progress = {0:##.##}%", completed * 100.0 / total)); }; downloadTask.successCallback = delegate(CosResult cosResult) { COSXML.Transfer.COSXMLDownloadTask.DownloadTaskResult result = cosResult as COSXML.Transfer.COSXMLDownloadTask.DownloadTaskResult; Console.WriteLine(result.GetResultInfo()); autoEvent.Set(); Assert.True(cosResult.httpCode == 200); }; downloadTask.failCallback = delegate(CosClientException clientEx, CosServerException serverEx) { if (clientEx != null) { Console.WriteLine("CosClientException: " + clientEx); } if (serverEx != null) { Console.WriteLine("CosServerException: " + serverEx.GetInfo()); } autoEvent.Set(); Assert.True(false); }; long costTime = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds() - now; transferManager.Download(downloadTask); autoEvent.WaitOne(); }
/// 高级接口下载对象 public void TransferDownloadObject() { //.cssg-snippet-body-start:[transfer-download-object] // 初始化 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)); }; downloadTask.successCallback = delegate(CosResult cosResult) { COSXML.Transfer.COSXMLDownloadTask.DownloadTaskResult result = cosResult as COSXML.Transfer.COSXMLDownloadTask.DownloadTaskResult; Console.WriteLine(result.GetResultInfo()); string eTag = result.eTag; }; downloadTask.failCallback = delegate(CosClientException clientEx, CosServerException serverEx) { if (clientEx != null) { Console.WriteLine("CosClientException: " + clientEx); } if (serverEx != null) { Console.WriteLine("CosServerException: " + serverEx.GetInfo()); } }; transferManager.Download(downloadTask); //.cssg-snippet-body-end }
/// 批量下载 public void TransferBatchDownloadObjects() { //.cssg-snippet-body-start:[transfer-batch-download-objects] 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); transferManager.Download(downloadTask); } //.cssg-snippet-body-end }
/// 下载时对单链接限速 public void DownloadObjectTrafficLimit() { //.cssg-snippet-body-start:[download-object-traffic-limit] 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"; //指定本地保存的文件名 GetObjectRequest request = new GetObjectRequest(bucket, cosPath, localDir, localFileName); request.LimitTraffic(8 * 1000 * 1024); // 限制为1MB/s COSXMLDownloadTask downloadTask = new COSXMLDownloadTask(request); transferManager.Download(downloadTask); //.cssg-snippet-body-end }
public void Run() { FileRequest fileRequest = new FileRequest(); int status = fileRequest.Download(File.Id, out FileListResponse res); switch (status) { case -20000: TaskStatusDetectionThread.Abort(); DownloadTaskList.SetFailure(File.Key, "请求服务器失败,请稍后再试。"); break; case -20001: TaskStatusDetectionThread.Abort(); DownloadTaskList.SetFailure(File.Key, "请求下载的文件不存在。"); break; case -10000: TaskStatusDetectionThread.Abort(); DownloadTaskList.SetFailure(File.Key, res.message); break; case 0: { string bucket = res.data.tencentCos.bucket; //存储桶,格式:BucketName-APPID string cosPath = res.data.files[0].storageName; //对象在存储桶中的位置标识符,即称对象键 string localDir = File.LocalPath; //本地文件夹 string localFileName = File.FileName; //指定本地保存的文件名 CosService cosService = new CosService(res.data.tencentCos.region); CosXml cosXml = cosService.getCosXml(res.data.token.credentials.tmpSecretId, res.data.token.credentials.tmpSecretKey, res.data.token.credentials.token, res.data.token.expiredTime); TransferConfig transferConfig = new TransferConfig(); TransferManager transferManager = new TransferManager(cosXml, transferConfig); downloadTask = new COSXMLDownloadTask(bucket, cosPath, localDir, localFileName); downloadTask.progressCallback = delegate(long completed, long total) { DownloadTaskList.SetProgress(File.Key, completed, total); Console.WriteLine(String.Format("progress = {0:##.##}%", completed * 100.0 / total)); }; downloadTask.successCallback = delegate(CosResult cosResult) { TaskStatusDetectionThread.Abort(); COSXMLDownloadTask.DownloadTaskResult result = cosResult as COSXMLDownloadTask.DownloadTaskResult; Console.WriteLine("successCallback: " + result.GetResultInfo()); string eTag = result.eTag; DownloadTaskList.SetSuccess(File.Key); }; downloadTask.failCallback = delegate(CosClientException clientEx, CosServerException serverEx) { if (clientEx != null) { Console.WriteLine("CosClientException: " + clientEx); } if (serverEx != null) { Console.WriteLine("CosServerException: " + serverEx.GetInfo()); } TaskStatusDetectionThread.Abort(); DownloadTaskList.SetFailure(File.Key, "COS下载出错。"); }; transferManager.Download(downloadTask); } break; default: TaskStatusDetectionThread.Abort(); DownloadTaskList.SetFailure(File.Key, "未知原因下载失败。"); break; } }