請確認您已經熟悉OSS的基本概念,如儲存空間(Bucket)、檔案/對象(Object)、訪問網域名稱(Endpoint)、存取金鑰(AccessKey,包括AccessKeyId和AccessKeySecret)等。
本節您將看到如何快速使用OSS .NET SDK完成常見操作,如建立儲存空間、上傳檔案、下載檔案等。
初始化OssClient
下面代碼用於建立一個OssClient:
using Aliyun.OSS;
/// <summary>
/// 由使用者指定的OSS訪問地址、阿里雲頒發的AccessKeyId/AccessKeySecret構造一個新的OssClient執行個體。
/// </summary>
/// <param name="endpoint">OSS的訪問地址。</param>
/// <param name="accessKeyId">OSS的訪問ID。</param>
/// <param name="accessKeySecret">OSS的存取金鑰。</param>
public void CreateClient(string endpoint, string accessKeyId, string accessKeySecret)
{
var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
}
關於OssClient的詳細介紹,請參見 初始化。
新建儲存空間
儲存空間是OSS全域命名空間,相當於資料的容器,可以儲存若干檔案。
以下代碼用於新建一個儲存空間:
using Aliyun.OSS;
/// <summary>
/// 在OSS中建立一個新的儲存空間。
/// </summary>
/// <param name="bucketName">要建立的儲存空間的名稱</param>
public void CreateBucket(string bucketName)
{
var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
try
{
var bucket = client.CreateBucket(bucketName);
Console.WriteLine("Create bucket succeeded.");
Console.WriteLine("Name:{0}", bucket.Name);
}
catch (Exception ex)
{
Console.WriteLine("Create bucket failed, {0}", ex.Message);
}
}
關於儲存空間的命名規範,請參見管理Bucket中的命名規範。
上傳檔案
檔案是OSS中最基本的資料單元。
以下代碼用於上傳檔案:
using Aliyun.OSS;
/// <summary>
/// 上傳指定的檔案到指定的OSS的儲存空間
/// </summary>
/// <param name="bucketName">指定的儲存空間名稱</param>
/// <param name="key">檔案的在OSS上保存的名稱</param>
/// <param name="fileToUpload">指定上傳檔案的本地路徑</param>
public void PutObject(string bucketName, string key, string fileToUpload)
{
var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
try
{
var result = client.PutObject(bucketName, key, fileToUpload);
Console.WriteLine("Put object succeeded");
Console.WriteLine("ETag:{0}", result.ETag);
}
catch (Exception ex)
{
Console.WriteLine("Put object failed, {0}", ex.Message);
}
}
上傳檔案詳情,請參見上傳檔案 。
列舉檔案
當您完成一系列上傳後,可能需要查看某個儲存空間中有哪些檔案。
以下代碼用於列舉檔案:
using Aliyun.OSS;
/// <summary>
/// 列出指定儲存空間的檔案清單
/// </summary>
/// <param name="bucketName">儲存空間的名稱</param>
public void ListObjects(string bucketName)
{
var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
try
{
var listObjectsRequest = new ListObjectsRequest(bucketName);
var result = client.ListObjects(listObjectsRequest);
Console.WriteLine("List object succeeded");
foreach (var summary in result.ObjectSummaries)
{
Console.WriteLine(summary.Key);
}
}
catch (Exception ex)
{
Console.WriteLine("List object failed, {0}", ex.Message);
}
}
獲取檔案
以下代碼用於對指定檔案內容的讀取:
using Aliyun.OSS;
var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
/// <summary>
/// 從指定的OSS儲存空間中獲取指定的檔案
/// </summary>
/// <param name="bucketName">要獲取的檔案所在的儲存空間名稱</param>
/// <param name="key">要獲取的檔案在OSS上的名稱</param>
/// <param name="fileToDownload">本機存放區下載檔案的目錄<param>
public void GetObject(string bucketName, string key, string fileToDownload)
{
try
{
var obj = client.GetObject(bucketName, key);
//將從OSS讀取到的檔案寫到本地
using (var requestStream = obj.Content)
{
byte[] buf = new byte[1024];
using (var fs = File.Open(fileToDownload, FileMode.OpenOrCreate))
{
var len = 0;
while ((len = requestStream.Read(buf, 0, 1024)) != 0)
{
fs.Write(buf, 0, len);
}
}
}
}
catch (Exception ex)
{
Console.WriteLine("Get object failed, {0}", ex.Message);
}
}
當調用OssClient的GetObject方法時,會返回一個OssObject對象,此對象包含了檔案的各種資訊。
通過調用OssObject的GetObjectContent方法,可以獲取返回的檔案輸入資料流,通過讀取此輸入資料流獲取此檔案的內容,在用完之後關閉這個流。
刪除檔案
以下代碼用於刪除指定檔案:
using Aliyun.OSS;
/// <summary>
/// 刪除指定的檔案
/// </summary>
/// <param name="bucketName">檔案所在儲存空間的名稱</param>
/// <param name="key">待刪除的檔案名稱</param>
public void DeleteObject(string bucketName, string key)
{
var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
try
{
client.DeleteObject(bucketName, key);
Console.WriteLine("Delete object succeeded");
}
catch (Exception ex)
{
Console.WriteLine("Delete object failed, {0}", ex.Message);
}
}