1. 程式人生 > >阿里雲OSS儲存開發

阿里雲OSS儲存開發

OSSClient是與OSS服務互動的客戶端,SDK的OSS操作都是通過OSSClient完成的。

下面程式碼新建了一個OSSClient:

using Aliyun.OpenServices.OpenStorageService;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AliyunTest
{
    class Program
    {
        static readonly string accessKeyId = "AccessKeyId";
        static readonly string accessKeySecret = "AccessKeySecret";
        //關於這個endPoint,可以參考:http://bbs.aliyun.com/read/149100.html?spm=5176.7189909.0.0.YiwiFw
        static readonly string endPoint = "http://oss-cn-beijing.aliyuncs.com";

        static void Main(string[] args)
        {
            //初始化 OSSClient
            OssClient ossClient = new OssClient(endPoint, accessKeyId, accessKeySecret);

            //使用程式碼...
        }
    }
}

在上面程式碼中,變數 accessKeyId 與 accessKeySecret 是由系統分配給使用者的,稱為ID對,用於標識使用者,為訪問OSS做簽名驗證。

 

Step 2. 新建Bucket

Bucket是OSS上的名稱空間,相當於資料的容器,可以儲存若干資料實體(Object)。

你可以按照下面的程式碼新建一個Bucket:

/// <summary>
/// 新建儲存物件容器Bucket
/// </summary>
/// <param name="bucketName">容器名稱</param>
void CreateBucket(string bucketName)
{
    //初始化 OSSClient
    OssClient ossClient = new OssClient(endPoint, accessKeyId, accessKeySecret);
    
    // 新建一個Bucket
    var bucket = ossClient.CreateBucket(bucketName);

    Console.WriteLine(bucket.CreationDate);
}

由於Bucket的名字是全域性唯一的,所以儘量保證你的 bucketName 不與別人重複。

其實也可以在阿里雲的OSS管理控制檯建立。

 

Step 3. 上傳Object

Object是OSS中最基本的資料單元,你可以把它簡單地理解為檔案,用下面程式碼可以實現一個Object的上傳:

/// <summary>
/// 進行物件儲存
/// </summary>
/// <param name="bucketName">bucket名稱</param>
void PutObject(string bucketName)
{
    //初始化 OSSClient
    OssClient ossClient = new OssClient(endPoint, accessKeyId, accessKeySecret);

    //定義檔案流
    var objStream = new System.IO.FileStream("D:\\example\\test.jpg",     System.IO.FileMode.OpenOrCreate);
    //定義 object 描述
    var objMetadata = new ObjectMetadata();
    var objKey = "test.jpg";

    //執行 put 請求,並且返回物件的MD5摘要。
    var putResult = ossClient.PutObject(bucketName, objKey, objStream, objMetadata);

    Console.WriteLine(putResult.ETag);
}

Object通過InputStream的形式上傳到OSS中。在上面的例子裡我們可以看出,每上傳一個Object,都需要指定和Object關 聯的ObjectMetadata。ObjectMetaData是使用者對該object的描述,由一系列name-value對組成;其中 ContentLength是必須設定的,以便SDK可以正確識別上傳Object的大小。

Put Object請求處理成功後,OSS會將收到檔案的MD5值放在返回結果的ETag中。使用者可以根據ETag檢驗上傳的檔案與本地的是否一致。

 

Step 4. 獲取指定Objec

/// <summary>
 /// 獲取一個儲存物件
/// </summary>
/// <param name="bucketName">bucket名稱</param>
/// <param name="objKey">物件標識名稱</param>
void GetObject(string bucketName, string objKey)
{
	//初始化 OSSClient
	OssClient ossClient = new OssClient(endPoint, accessKeyId, accessKeySecret);

	//獲取物件
	var obj = ossClient.GetObject(bucketName, objKey);
	//獲取Object的輸入流
	var objStream = obj.Content;

	//怎麼處理資料流,您看著辦吧。
	//...

	//最後關閉資料流。
	objStream.Close();
}