Exemple #1
0
        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
        }
Exemple #6
0
        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;
            }
        }