Ø 簡介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?
BOS(Baidu Object Storage/百度對象存儲)提供穩定、安全、高效以及高擴展存儲服務,支持單文件最大5TB的文本、多媒體、二進制等任何類型的數據存儲。簡單的說,就是能夠將文件存儲至白雲的服務器中,並提供了上傳、下載等機制的一個平臺。更多介紹、核心概念。
2) 什麼是 C# SDK?
SDK(Software 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. 點擊右側的【安全中心】
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】
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管理】
2) 新建Bucket
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名稱