欢迎您来到腾讯云!积分商城

腾讯云腾讯云论坛

 找回密码
 立即注册
忘了密码?

扫一扫,访问微社区

快捷导航
搜索
查看: 1450|回复: 2

[经验分享] cos兼容aws-.net-sdk(c#)使用指南

[复制链接]

1

主题

0

好友

280

积分

小白[LV1]

Rank: 1

云币
1160
威望
280
发表于 2018-1-17 14:45:41 |显示全部楼层 |未分类
1、获取aws . net sdkaws官网sdk
  1. https://amazonaws-china.com/cn/sdk-for-net/
复制代码
下载msi安装程序
  1. https://sdk-for-net.amazonwebservices.com/latest/AWSToolsAndSDKForNet.msi
复制代码
或者直接使用NuGet下载这两个库



2、具体使用Demo
demo包含以下高频接口
  • PutBucket
  • DeleteBucket
  • ListObjects
  • PutObject
  • GetObject
  • DeleteObject
  • Multiupload(分块上传)
  • ListBucket(需要重新设置ServiceURL)
其他低频接口可参考
  1. http://docs.ceph.com/docs/master/radosgw/s3/csharp/http://docs.aws.amazon.com/AmazonS3/latest/dev/usingHLmpuDotNet.html
复制代码
实例
  1. using System;
  2. using System.Collections.Specialized;
  3. using System.Configuration;
  4. using System.IO;
  5. using System.Linq;
  6. using System.Net;

  7. using Amazon;
  8. using Amazon.S3;
  9. using Amazon.S3.Model;
  10. using Amazon.S3.Transfer;
  11. namespace GettingStartedGuide
  12. {
  13.     class S3Sample
  14.     {
  15.         //注意bucketName是bucketname+appid
  16.         static string bucketName = "lewzylutest-1252448703";
  17.         static string keyName = "12312";
  18.         static string filePath = "E:/a.txt";
  19.         public static void Main(string[] args)
  20.         {
  21.             AmazonS3Config config = new AmazonS3Config();
  22.             //secretid
  23.             string accessKey = "******************************";
  24.             //secretkey
  25.             string secretKey = "******************************";

  26.             //注意要将<region>替换为相对应的region,如ap-beijing,ap-guangzhou...
  27.             config.ServiceURL = "http://cos.ap-guangzhou.myqcloud.com";
  28.             AmazonS3Client client = new AmazonS3Client(
  29.                     accessKey,
  30.                     secretKey,
  31.                     config
  32.                     );

  33.             //PutBucket
  34.             try
  35.             {
  36.                 PutBucketRequest request = new PutBucketRequest();
  37.                 request.BucketName = bucketName;
  38.                 PutBucketResponse response = client.PutBucket(request);
  39.                 Console.WriteLine("PutBucket");
  40.                 Console.WriteLine(response.HttpStatusCode);
  41.             }
  42.             catch (Exception ex)
  43.             {
  44.                 Console.WriteLine(ex.Message);
  45.             }

  46.             //ListObjects
  47.             try
  48.             {
  49.                 ListObjectsRequest request = new ListObjectsRequest();
  50.                 request.BucketName = bucketName;
  51.                 ListObjectsResponse response = client.ListObjects(request);
  52.                 Console.WriteLine("ListObjects");
  53.                 Console.WriteLine(response.HttpStatusCode);
  54.                 foreach (S3Object o in response.S3Objects)
  55.                 {
  56.                     Console.WriteLine("{0}\t{1}\t{2}", o.Key, o.Size, o.LastModified);
  57.                 }
  58.             }
  59.             catch (Exception ex)
  60.             {
  61.                 Console.WriteLine(ex.Message);
  62.             }
  63.             
  64.             //PutObject
  65.             try
  66.             {
  67.                 PutObjectRequest request = new PutObjectRequest();
  68.                 request.BucketName = bucketName;
  69.                 request.Key = keyName;
  70.                 request.ContentType = "text/plain";
  71.                 //request.FilePath = filePath;
  72.                 request.ContentBody = "12321";
  73.                 PutObjectResponse response = client.PutObject(request);
  74.                 Console.WriteLine("PutObject");
  75.                 Console.WriteLine(response.HttpStatusCode);
  76.             }
  77.             catch (Exception ex)
  78.             {
  79.                 Console.WriteLine(ex.Message);
  80.             }

  81.             //GetObject
  82.             try
  83.             {
  84.                 GetObjectRequest request = new GetObjectRequest();
  85.                 request.BucketName = bucketName;
  86.                 request.Key = keyName;
  87.                 GetObjectResponse response = client.GetObject(request);
  88.                 response.WriteResponseStreamToFile("C:\\Users\\larry\\Documents\\hello.txt");
  89.                 Console.WriteLine("GetObject");
  90.                 Console.WriteLine(response.HttpStatusCode);
  91.             }
  92.             catch (Exception ex)
  93.             {
  94.                 Console.WriteLine(ex.Message);
  95.             }

  96.             //DeleteObject
  97.             try
  98.             {
  99.                 DeleteObjectRequest request = new DeleteObjectRequest();
  100.                 request.BucketName = bucketName;
  101.                 request.Key = keyName;
  102.                 DeleteObjectResponse response = client.DeleteObject(request);
  103.                 Console.WriteLine("DeleteObject");
  104.                 Console.WriteLine(response.HttpStatusCode);
  105.             }
  106.             catch (Exception ex)
  107.             {
  108.                 Console.WriteLine(ex.Message);
  109.             }

  110.             //DeleteBucket
  111.             try
  112.             {
  113.                 DeleteBucketRequest request = new DeleteBucketRequest();
  114.                 request.BucketName = bucketName;
  115.                 DeleteBucketResponse response = client.DeleteBucket(request);
  116.                 Console.WriteLine("DeleteBucket");
  117.                 Console.WriteLine(response.HttpStatusCode);
  118.             }
  119.             catch (Exception ex)
  120.             {
  121.                 Console.WriteLine(ex.Message);
  122.             }

  123.             //Multiupload
  124.             try
  125.             {
  126.                 TransferUtility fileTransferUtility = new
  127.                     TransferUtility(client);

  128.                 // 1. 以本地文件的名字上传文件
  129.                 fileTransferUtility.Upload(filePath, bucketName);
  130.                 Console.WriteLine("Upload 1 completed");

  131.                 // 2. 将本地文件以keyName的名字上传
  132.                 fileTransferUtility.Upload(filePath,
  133.                                           bucketName, keyName);
  134.                 Console.WriteLine("Upload 2 completed");

  135.                 // 3. 从流上传
  136.                 using (FileStream fileToUpload =
  137.                     new FileStream(filePath, FileMode.Open, FileAccess.Read))
  138.                 {
  139.                     fileTransferUtility.Upload(fileToUpload,
  140.                                                bucketName, keyName);
  141.                 }
  142.                 Console.WriteLine("Upload 3 completed");

  143.                 // 4.高级设置
  144.                 TransferUtilityUploadRequest fileTransferUtilityRequest = new TransferUtilityUploadRequest
  145.                 {
  146.                     BucketName = bucketName,
  147.                     FilePath = filePath,
  148.                     StorageClass = S3StorageClass.ReducedRedundancy,
  149.                     PartSize = 6291456, // 6 MB.
  150.                     Key = keyName,
  151.                     CannedACL = S3CannedACL.PublicRead
  152.                 };
  153.                 fileTransferUtilityRequest.Metadata.Add("param1", "Value1");
  154.                 fileTransferUtilityRequest.Metadata.Add("param2", "Value2");
  155.                 fileTransferUtility.Upload(fileTransferUtilityRequest);
  156.                 Console.WriteLine("Upload 4 completed");
  157.             }
  158.             catch (AmazonS3Exception s3Exception)
  159.             {
  160.                 Console.WriteLine(s3Exception.Message,
  161.                                   s3Exception.InnerException);
  162.             }

  163.             //listBuckets
  164.             //注意:listBuckets需要重新设置ServiceURL
  165.             config.ServiceURL = "http://service.cos.myqcloud.com";
  166.             client = new AmazonS3Client(
  167.                     accessKey,
  168.                     secretKey,
  169.                     config
  170.                     );
  171.             try
  172.             {
  173.                 ListBucketsResponse response = client.ListBuckets();
  174.                 foreach (S3Bucket b in response.Buckets)
  175.                 {
  176.                     Console.WriteLine("{0}\t{1}", b.BucketName, b.CreationDate);
  177.                 }
  178.             }
  179.             catch (Exception ex)
  180.             {
  181.                 Console.WriteLine(ex.Message);
  182.             }
  183.         }
  184.         

  185.     }
  186. }
复制代码

0

主题

0

好友

60

积分

小白[LV1]

Rank: 1

云币
210
威望
60
发表于 2018-1-24 17:03:18 |显示全部楼层
楼主是否知道,如何在上传文件后,直接获得文件下载链接,而不是通过接口查询。
回复

使用道具 举报

1

主题

0

好友

280

积分

小白[LV1]

Rank: 1

云币
1160
威望
280
发表于 2018-1-31 16:27:31 |显示全部楼层
cash216 发表于 2018-1-24 17:03
楼主是否知道,如何在上传文件后,直接获得文件下载链接,而不是通过接口查询。 ...

可以参考 http://docs.ceph.com/docs/master/radosgw/s3/csharp/ 最下面的那个接口,可以直接或者下载链接
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册
您需要登录后才可以发帖 QQ登录

联系我们|腾讯云平台|积分商城|腾讯云官方论坛    

GMT+8, 2018-12-14 16:51 , Processed in 1.162117 second(s), 28 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部