cos兼容aws-.net-sdk(c#)使用指南

1、獲取aws . net sdk

aws官網(wǎng)sdk

https://amazonaws-china.com/cn/sdk-for-net/

下載msi安裝程序

https://sdk-for-net.amazonwebservices.com/latest/AWSToolsAndSDKForNet.msi

或者直接使用NuGet下載這兩個(gè)庫(kù)


2崎脉、具體使用Demo

demo包含以下高頻接口

  • PutBucket
  • DeleteBucket
  • ListObjects
  • PutObject
  • GetObject
  • DeleteObject
  • Multiupload(分塊上傳)
  • ListBucket(需要重新設(shè)置ServiceURL)
    其他低頻接口可參考
http://docs.ceph.com/docs/master/radosgw/s3/csharp/
http://docs.aws.amazon.com/AmazonS3/latest/dev/usingHLmpuDotNet.html

實(shí)例

using System;
using System.Collections.Specialized;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Net;

using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using Amazon.S3.Transfer;
namespace GettingStartedGuide
{
    class S3Sample
    {
        //注意bucketName是bucketname+appid
        static string bucketName = "lewzylutest-1252448703";
        static string keyName = "12312";
        static string filePath = "E:/a.txt";
        public static void Main(string[] args)
        {
            AmazonS3Config config = new AmazonS3Config();
            //secretid
            string accessKey = "******************************";
            //secretkey
            string secretKey = "******************************";

            //注意要將<region>替換為相對(duì)應(yīng)的region秦叛,如ap-beijing阱持,ap-guangzhou...
            config.ServiceURL = "http://cos.ap-guangzhou.myqcloud.com";
            AmazonS3Client client = new AmazonS3Client(
                    accessKey,
                    secretKey,
                    config
                    );

            //PutBucket
            try
            {
                PutBucketRequest request = new PutBucketRequest();
                request.BucketName = bucketName;
                PutBucketResponse response = client.PutBucket(request);
                Console.WriteLine("PutBucket");
                Console.WriteLine(response.HttpStatusCode);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            //ListObjects
            try
            {
                ListObjectsRequest request = new ListObjectsRequest();
                request.BucketName = bucketName;
                ListObjectsResponse response = client.ListObjects(request);
                Console.WriteLine("ListObjects");
                Console.WriteLine(response.HttpStatusCode);
                foreach (S3Object o in response.S3Objects)
                {
                    Console.WriteLine("{0}\t{1}\t{2}", o.Key, o.Size, o.LastModified);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            
            //PutObject
            try
            {
                PutObjectRequest request = new PutObjectRequest();
                request.BucketName = bucketName;
                request.Key = keyName;
                request.ContentType = "text/plain";
                //request.FilePath = filePath;
                request.ContentBody = "12321";
                PutObjectResponse response = client.PutObject(request);
                Console.WriteLine("PutObject");
                Console.WriteLine(response.HttpStatusCode);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            } 

            //GetObject
            try
            {
                GetObjectRequest request = new GetObjectRequest();
                request.BucketName = bucketName;
                request.Key = keyName;
                GetObjectResponse response = client.GetObject(request);
                response.WriteResponseStreamToFile("C:\\Users\\larry\\Documents\\hello.txt");
                Console.WriteLine("GetObject");
                Console.WriteLine(response.HttpStatusCode);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            //DeleteObject
            try
            {
                DeleteObjectRequest request = new DeleteObjectRequest();
                request.BucketName = bucketName;
                request.Key = keyName;
                DeleteObjectResponse response = client.DeleteObject(request);
                Console.WriteLine("DeleteObject");
                Console.WriteLine(response.HttpStatusCode);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            //DeleteBucket
            try
            {
                DeleteBucketRequest request = new DeleteBucketRequest();
                request.BucketName = bucketName;
                DeleteBucketResponse response = client.DeleteBucket(request);
                Console.WriteLine("DeleteBucket");
                Console.WriteLine(response.HttpStatusCode);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            //Multiupload
            try
            {
                TransferUtility fileTransferUtility = new
                    TransferUtility(client);

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

                // 2. 將本地文件以keyName的名字上傳
                fileTransferUtility.Upload(filePath,
                                          bucketName, keyName);
                Console.WriteLine("Upload 2 completed");

                // 3. 從流上傳
                using (FileStream fileToUpload =
                    new FileStream(filePath, FileMode.Open, FileAccess.Read))
                {
                    fileTransferUtility.Upload(fileToUpload,
                                               bucketName, keyName);
                }
                Console.WriteLine("Upload 3 completed");

                // 4.高級(jí)設(shè)置
                TransferUtilityUploadRequest fileTransferUtilityRequest = new TransferUtilityUploadRequest
                {
                    BucketName = bucketName,
                    FilePath = filePath,
                    StorageClass = S3StorageClass.ReducedRedundancy,
                    PartSize = 6291456, // 6 MB.
                    Key = keyName,
                    CannedACL = S3CannedACL.PublicRead
                };
                fileTransferUtilityRequest.Metadata.Add("param1", "Value1");
                fileTransferUtilityRequest.Metadata.Add("param2", "Value2");
                fileTransferUtility.Upload(fileTransferUtilityRequest);
                Console.WriteLine("Upload 4 completed");
            }
            catch (AmazonS3Exception s3Exception)
            {
                Console.WriteLine(s3Exception.Message,
                                  s3Exception.InnerException);
            }

            //listBuckets
            //注意:listBuckets需要重新設(shè)置ServiceURL
            config.ServiceURL = "http://service.cos.myqcloud.com";
            client = new AmazonS3Client(
                    accessKey,
                    secretKey,
                    config
                    );
            try
            {
                ListBucketsResponse response = client.ListBuckets();
                foreach (S3Bucket b in response.Buckets)
                {
                    Console.WriteLine("{0}\t{1}", b.BucketName, b.CreationDate);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
        

    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市规阀,隨后出現(xiàn)的幾起案子恒序,更是在濱河造成了極大的恐慌,老刑警劉巖谁撼,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件歧胁,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡厉碟,警方通過(guò)查閱死者的電腦和手機(jī)喊巍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)箍鼓,“玉大人崭参,你說(shuō)我怎么就攤上這事】羁В” “怎么了何暮?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)铐殃。 經(jīng)常有香客問(wèn)我海洼,道長(zhǎng),這世上最難降的妖魔是什么富腊? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任坏逢,我火速辦了婚禮,結(jié)果婚禮上赘被,老公的妹妹穿的比我還像新娘是整。我一直安慰自己,他們只是感情好民假,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布浮入。 她就那樣靜靜地躺著,像睡著了一般阳欲。 火紅的嫁衣襯著肌膚如雪舵盈。 梳的紋絲不亂的頭發(fā)上陋率,一...
    開(kāi)封第一講書(shū)人閱讀 48,970評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音秽晚,去河邊找鬼瓦糟。 笑死,一個(gè)胖子當(dāng)著我的面吹牛赴蝇,可吹牛的內(nèi)容都是我干的菩浙。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼句伶,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼劲蜻!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起考余,我...
    開(kāi)封第一講書(shū)人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤先嬉,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后楚堤,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體疫蔓,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年身冬,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了衅胀。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡酥筝,死狀恐怖滚躯,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情嘿歌,我是刑警寧澤掸掏,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站搅幅,受9級(jí)特大地震影響阅束,放射性物質(zhì)發(fā)生泄漏呼胚。R本人自食惡果不足惜茄唐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蝇更。 院中可真熱鬧沪编,春花似錦、人聲如沸年扩。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)厨幻。三九已至相嵌,卻和暖如春腿时,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背饭宾。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工批糟, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人看铆。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓徽鼎,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親弹惦。 傳聞我的和親對(duì)象是個(gè)殘疾皇子否淤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 1、搭建環(huán)境 以下測(cè)試均在ubuntu14下進(jìn)行棠隐。 g++4.9.2 cmake v3+ 以及一些其他的依賴 2石抡、...
    lewzylu閱讀 2,069評(píng)論 0 0
  • 目前cos現(xiàn)網(wǎng)支持V4簽名,所以之前由于V4簽名被卡掉的awssdk現(xiàn)在都可以兼容cos了助泽。在這里提供一份aws-...
    lewzylu閱讀 2,243評(píng)論 0 0
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理汁雷,服務(wù)發(fā)現(xiàn),斷路器报咳,智...
    卡卡羅2017閱讀 134,599評(píng)論 18 139
  • 性能改進(jìn) 改進(jìn)性能是此版本的一個(gè)重點(diǎn)所在侠讯。 除對(duì)提高內(nèi)存和響應(yīng)作出一些優(yōu)化外,整個(gè) JavaScript/Type...
    三夢(mèng)哥閱讀 3,648評(píng)論 0 3
  • 2018.1.2(冬月十六)星期二 晴 (一) “千師進(jìn)萬(wàn)家”活動(dòng)學(xué)生日記集(部分) (二)【小米...
    五月的草莓閱讀 220評(píng)論 0 0