使用百度雲 BOS 和 C# SDK 開發數據存儲

Ø  簡介html

本文主要介紹如何使用百度雲的 C# SDK 操做 BOS(Baidu Object Storage/百度對象存儲),以及常見問題和解決辦法。本文將以如下幾點展開學習:安全

1.   基本介紹服務器

2.   建立 BaiduBce.Services.Bos.BosClient 對象框架

3.   獲取 Bucket 集合ide

4.   獲取指定 Bucket 中的全部 ObjectKey工具

5.   上傳對象(文件)學習

6.   下載對象(文件)開發工具

7.   常見問題及解決辦法ui

 

1.   基本介紹spa

1)   什麼是 BOS?

BOSBaidu Object Storage/百度對象存儲)提供穩定、安全、高效以及高擴展存儲服務,支持單文件最大5TB的文本、多媒體、二進制等任何類型的數據存儲。簡單的說,就是能夠將文件存儲至白雲的服務器中,並提供了上傳、下載等機制的一個平臺。更多介紹核心概念

 

2)   什麼是 C# SDK?

SDKSoftware Development Kit/軟件開發工具包)通常都是一些軟件工程師爲特定的軟件包、軟件框架、硬件平臺、操做系統等創建應用軟件時的開發工具的集合。就是根據軟件體現設計出來了軟件開發包,可使用這個軟件開發包快速的開發,具備快速、簡單、高效等優勢。一個完整的 SDK 應該具備不一樣語言或平臺,這樣才能應用於各類平臺,本文主要學習百度雲 BOS C# SDK 的使用。

 

3)   入門介紹

1.   產品訂價

BOS 並非一個徹底免費的平臺,收費標準可參考:按需計費 或者諮詢百度雲客服專員。剛開始試用兩天,後面就會由於欠費停用 BOS

2.   API 參考

除了使用 SDK 工具包,另外可使用 API 接口 來操做 BOS,但本文先不去討論這一塊的內容。

3.   安裝 SDK 工具包

參考連接:安裝 SDK 工具包

4.   C# SDK 文檔

參考連接:快速入門

5.   開發準備

參考連接:開發準備

 

2.   建立 BaiduBce.Services.Bos.BosClient 對象

/// <summary>

/// 建立 BaiduBce.Services.Bos.BosClient 對象。

/// </summary>

private static BosClient GenerateBosClient()

{

    const string accessKeyId = "xxxxbba3f39d43799d29c130d40fxxxx";      //您的Access Key ID

    const string secretAccessKey = "xxxx1520394e4754943108720899xxxx";  //您的Secret Access Key

    /*

    * 北京區域:http://bj.bcebos.com

        * 廣州區域:http://gz.bcebos.com

        * 蘇州區域:http://su.bcebos.com

        */

    const string endpoint = "http://bj.bcebos.com";     //指定BOS服務域名

 

    BceClientConfiguration config = new BceClientConfiguration();

    config.Credentials = new DefaultBceCredentials(accessKeyId, secretAccessKey);

    config.Endpoint = endpoint;

 

    return new BosClient(config);

}

1)   注意:將要操做的 Bucket 必須與所屬區域地址對應。

2)   更多:參考API

 

3.   獲取 Bucket 集合

/// <summary>

/// 獲取 Bucket 集合。

/// </summary>

public static void GetBuckets()

{

    BosClient client = GenerateBosClient();

    List<BucketSummary> buckets = client.ListBuckets().Buckets;

    foreach (BucketSummary bucket in buckets)

    {

        Console.WriteLine(bucket.Name);

    }

}

1)   運行結果(建立的兩個Bucket):

bjbosdata

gzbosdata

2)   更多:參考API

 

4.   獲取指定 Bucket 中的全部 ObjectKey

/// <summary>

/// 獲取指定 Bucket 中的全部 ObjectKey.

/// </summary>

public static void GetObjectKeys()

{

    BosClient client = GenerateBosClient();

    ListObjectsResponse listObjectsResponse = client.ListObjects("bjbosdata");

    foreach (BosObjectSummary objectSummary in listObjectsResponse.Contents)

    {

        Console.WriteLine("ObjectKey: " + objectSummary.Key);

    }

}

1)   運行結果:

ObjectKey: default_files/

ObjectKey: default_files/AspNetMVC4Setup_CHS.exe

 

5.   上傳對象(文件)

/// <summary>

/// 上傳文件。

/// </summary>

public static void UploadFile()

{

    string fileName = @"F:\ToStudy\其餘\開放平臺\百度雲開放平臺\BosFiles\AspNetMVC4Setup.exe";

    FileInfo file = new FileInfo(fileName);

 

    const string bucketName = "bjbosdata";  //Bucket名稱

    const string objectKey = @"default_files/AspNetMVC4Setup.exe";  //指定object名稱

 

    BosClient client = GenerateBosClient();

    //以文件形式上傳Object

    PutObjectResponse putObjectFromFileResponse = client.PutObject(bucketName, objectKey, file);

 

    Console.WriteLine(putObjectFromFileResponse.ETAG);  //c71157d9b3a4105b2d3c5a968d0ced0a

}

更多(上傳形式):參考API

 

6.   下載對象(文件)

/// <summary>

/// 下載文件。

/// </summary>

public static void DownLoadFile()

{

    string path = @"F:\ToStudy\其餘\開放平臺\百度雲開放平臺\BosFiles\";

    if (!Directory.Exists(path))

        Directory.CreateDirectory(path);

 

    const string bucketName = "bjbosdata";  //Bucket名稱

    const string objectKey = @"default_files/AspNetMVC4Setup.exe";  //指定object名稱

 

    BosClient client = GenerateBosClient();

    BosObject bosObject = client.GetObject(bucketName, objectKey);

    using (Stream objectStream = bosObject.ObjectContent)

    {

        //下載文件的存儲路徑

        string fileName = string.Format(@"{0}AspNetMVC4Setup_{1}.exe", path, DateTime.Now.Millisecond);

        using (FileStream fileStream = new FileInfo(fileName).OpenWrite())

        {

            byte[] buffer = new byte[2048];

            int count = 0;

            while ((count = objectStream.Read(buffer, 0, buffer.Length)) > 0)

            {

                fileStream.Write(buffer, 0, count);

            }

        }

    }

}

更多:參考API

 

7.   常見問題及解決辦法

1)   如何獲取 Access Key ID Secret Access Key?

1.   登陸百度雲

2.   點擊右側的【安全中心】

clip_image002[6]

 

2)   You must active bos service. (Status Code: 403; Error Code: OptInRequired; Request ID: f07b81b4-70ed-4f36-a57f-adad6ab1e82c)

1.   可能產生的異常代碼:List<BucketSummary> buckets = client.ListBuckets().Buckets;

2.   解決辦法:

1)   點擊進入,左側的【對象存儲BOS

clip_image003[6]

2)   激活「BOS 服務」

 

3)   The specified bucket is not valid. (Status Code: 400; Error Code: InvalidBucketName; Request ID: bc25b87b-1521-4031-86cb-cf623e1ae4de)

1.   可能產生的異常代碼:List<BucketSummary> buckets = client.ListBuckets().Buckets;

2.   解決辦法:

1)   點擊進入【Bucket管理】

clip_image004[6]

2)   新建Bucket

clip_image006[6]

 

4)   The specified key does not exist. (Status Code: 404; Error Code: NoSuchKey; Request ID: 53b5c8b9-3e9e-4850-b252-68bf9caaeb32)

1.   可能產生的異常代碼:BosObject bosObject = client.GetObject(bucketName, objectKey);

2.   解決辦法:

1)   確認建立的 bucket 下的文件或者文件必須存在,例如:

const string objectKey = @"default_files/AspNetMVC4Setup.exe";  //指定object名稱

相關文章
相關標籤/搜索