123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259 |
- using COSXML;
- using COSXML.Auth;
- using COSXML.Common;
- using COSXML.Utils;
- using COSXML.Model;
- using COSXML.Model.Object;
- using COSXML.Model.Bucket;
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Text;
- using COSXML.CosException;
- using System.Threading;
- using System.Threading.Tasks;
- using COSXML.Transfer;
- namespace COSXMLDemo
- {
- public class Program
- {
-
- internal static string bucket = @"bucket-4-dotnet-demo-1253653367";
- public static async Task Main(string[] args)
- {
-
- string secretId = Environment.GetEnvironmentVariable("SECRET_ID");
-
- string secretKey = Environment.GetEnvironmentVariable("SECRET_KEY");
-
- string region = "ap-guangzhou";
-
- CosXmlConfig config = new CosXmlConfig.Builder()
- .SetRegion(region)
- .SetDebugLog(true)
- .Build();
-
-
-
-
-
-
-
-
-
- long keyDurationSecond = 600;
- QCloudCredentialProvider qCloudCredentialProvider = new DefaultQCloudCredentialProvider(secretId, secretKey, keyDurationSecond);
-
- CosXmlServer cosXml = new CosXmlServer(config, qCloudCredentialProvider);
- try
- {
-
- Console.WriteLine(" ======= Put Bucket ======");
- PutBucket(cosXml);
-
- Console.WriteLine(" ======= Put Object ======");
- string cosKey = await PutObject(cosXml);
-
- Console.WriteLine(" ======= Get Object ======");
- await GetObject(cosXml, cosKey);
-
- Console.WriteLine(" ======= Delete Object ======");
- DeleteObject(cosXml, cosKey);
-
-
- }
- catch (COSXML.CosException.CosClientException clientEx)
- {
- Console.WriteLine("CosClientException: " + clientEx.Message);
- }
- catch (COSXML.CosException.CosServerException serverEx)
- {
- Console.WriteLine("CosServerException: " + serverEx.GetInfo());
- }
-
- finally
- {
-
- Console.WriteLine(" ======= Delete Bucket ======");
- DeleteBucket(cosXml);
- }
- Console.WriteLine(" ======= Program End. ======");
- }
- internal static void PutBucket(CosXmlServer cosXml)
- {
- try
- {
- PutBucketRequest request = new PutBucketRequest(bucket);
-
- PutBucketResult result = cosXml.PutBucket(request);
- Console.WriteLine(result.GetResultInfo());
- }
- catch (COSXML.CosException.CosServerException serverEx)
- {
- if (serverEx.statusCode != 409)
- {
- throw serverEx;
- }
- else
- {
- Console.WriteLine("Bucket Already exists.");
- }
- }
- }
- internal static void DeleteBucket(CosXmlServer cosXml)
- {
- DeleteBucketRequest request = new DeleteBucketRequest(bucket);
- DeleteBucketResult result = cosXml.DeleteBucket(request);
- Console.WriteLine(result.GetResultInfo());
- }
- internal static async Task<String> PutObject(CosXmlServer cosXml)
- {
- string cosKey = "cosKey";
-
-
- TransferConfig transferConfig = new TransferConfig();
-
-
- TransferManager transferManager = new TransferManager(cosXml, transferConfig);
-
-
- String cosPath = cosKey;
-
- String srcPath = @"本地绝对路径";
-
-
- COSXMLUploadTask uploadTask = new COSXMLUploadTask(bucket, cosPath);
- uploadTask.SetSrcPath(srcPath);
-
- uploadTask.progressCallback = delegate (long completed, long total)
- {
- Console.WriteLine(String.Format("progress = {0:##.##}%", completed * 100.0 / total));
- };
- try
- {
- COSXML.Transfer.COSXMLUploadTask.UploadTaskResult result = await
- transferManager.UploadAsync(uploadTask);
- Console.WriteLine(result.GetResultInfo());
- string eTag = result.eTag;
- }
- catch (Exception e)
- {
- Console.WriteLine("CosException: " + e);
- }
- return cosKey;
- }
- internal static void UploadDirectory(CosXmlServer cosXml)
- {
-
-
- TransferConfig transferConfig = new TransferConfig();
-
-
- TransferManager transferManager = new TransferManager(cosXml, transferConfig);
-
- String dir = @"本地文件夹绝对路径";
- var files = System.IO.Directory.GetFiles(dir);
- var tasks = new List<Task>();
- foreach (var file in files)
- {
- Console.WriteLine("Enqueue Upload: " + file);
-
- String cosPath = new FileInfo(file).Name;
-
-
- COSXMLUploadTask uploadTask = new COSXMLUploadTask(bucket, cosPath);
- uploadTask.SetSrcPath(file);
-
- tasks.Add(transferManager.UploadAsync(uploadTask));
- }
- try
- {
-
- Task.WaitAll(tasks.ToArray());
-
- Console.WriteLine("Upload Directory Complete");
- }
- catch (AggregateException e)
- {
- Console.WriteLine("\nThe following exceptions have been thrown by WaitAll(): (THIS WAS EXPECTED)");
- for (int j = 0; j < e.InnerExceptions.Count; j++)
- {
- Console.WriteLine("\n-------------------------------------------------\n{0}", e.InnerExceptions[j].ToString());
- }
- }
-
- }
- internal static async Task GetObject(CosXmlServer cosXml, string cosKey)
- {
- TransferConfig transferConfig = new TransferConfig();
-
-
- TransferManager transferManager = new TransferManager(cosXml, transferConfig);
-
-
- String cosPath = cosKey;
-
- 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);
- }
- }
- internal static void DeleteObject(CosXmlServer cosXml, string cosKey)
- {
- DeleteObjectRequest request = new DeleteObjectRequest(bucket, cosKey);
- DeleteObjectResult result = cosXml.DeleteObject(request);
- Console.WriteLine(result.GetResultInfo());
- }
- }
- }
|