儲存空間(Bucket)是OSS上的命名空間,也是計費、許可權控制、日誌記錄等進階功能的管理實體;
新建儲存空間
如下代碼可以新建一個儲存空間:
using Aliyun.OSS;
// 初始化OssClient
var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
/// <summary>
/// 建立一個新的儲存空間(Bucket)
/// </summary>
/// <param name="bucketName">儲存空間的名稱</param>
public void CreateBucket(string bucketName)
{
try
{
// 新建一個Bucket
client.CreateBucket(bucketName);
Console.WriteLine("Create bucket succeeded");
}
catch (Exception ex)
{
Console.WriteLine("Create bucket failed. {0}", ex.Message);
}
}
提示:
- 完整代碼參考:GitHub
重要:
- 由於儲存空間的名字是全域唯一的,所以必須保證您的BucketName不與別人重複。
列出使用者所有的儲存空間
下面代碼可以列出使用者所有的儲存空間:
using Aliyun.OSS;
// 初始化OssClient
var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
/// <summary>
/// 列出賬戶下所有的儲存空間資訊
/// </summary>
public void ListBuckets()
{
try
{
var buckets = client.ListBuckets();
Console.WriteLine("List bucket succeeded");
foreach (var bucket in buckets)
{
Console.WriteLine("Bucket name:{0},Location:{1},Owner:{2}", bucket.Name, bucket.Location, bucket.Owner);
}
}
catch (Exception ex)
{
Console.WriteLine("List bucket failed. {0}", ex.Message);
}
}
提示:
- 完整代碼參考:GitHub
使用CNAME進行訪問
當使用者將自己的網域名稱CNAME指向自己的一個儲存空間的網域名稱後,使用者可以使用自己的網域名稱來訪問OSS:如果需要使用CNAME,需要將ClientConfigration中的IsCname設定為true
using Aliyun.OSS;
using Aliyun.OSS.Common;
/// <summary>
/// 通過CNAME上傳檔案
/// </summary>
public void PutObjectByCname()
{
try
{
// 比如你的網域名稱"http://my-cname.com"CNAME指向你的儲存空間網域名稱"mybucket.oss-cn-hangzhou.aliyuncs.com"
// 建立ClientConfiguration執行個體
var conf = new ClientConfiguration();
// 配置使用Cname
conf.IsCname = true;
var client = new OssClient("http://my-cname.com/", accessKeyId, accessKeySecret, conf);
var result = client.putObject("mybucket", key, fileToUpload);
Console.WriteLine("Put object succeeded");
}
catch (Exception ex)
{
Console.WriteLine("Put object failed. {0}", ex.Message);
}
}
提示:
- 完整代碼參考:GitHub
提示:
- 使用者只需要在建立OssClinet類執行個體時,將原本填入該儲存空間的endpoint更換成CNAME後的網域名稱,且將ClientConfiguration的參數IsCname設定為true。
- 同時需要注意的是,使用該OssClient執行個體的後續操作中,儲存空間的名稱只能填成被指向的儲存空間名稱。
判斷儲存空間是否存在
判斷儲存空間是否存在可以使用以下代碼:
using Aliyun.OSS;
// 初始化OssClient
var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
/// <summary>
/// 判斷儲存空間是否存在
/// </summary>
/// <param name="bucketName">儲存空間的名稱</param>
public void DoesBucketExist(string bucketName)
{
try
{
var exist = client.DoesBucketExist(bucketName);
Console.WriteLine("Check object Exist succeeded");
Console.WriteLine("exist ? {0}", exist);
}
catch (Exception ex)
{
Console.WriteLine("Check object Exist failed. {0}", ex.Message);
}
}
提示:
- 完整代碼參考:GitHub
設定儲存空間存取權限
設定儲存空間存取權限可以使用以下代碼:
using Aliyun.OSS;
// 初始化OssClient
var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
/// <summary>
/// 設定儲存空間的存取權限
/// </summary>
/// <param name="bucketName">儲存空間的名稱</param>
public void SetBucketAcl(string buckteName)
{
try
{
// 指定Bucket ACL為公共讀
client.SetBucketAcl(bucketName, CannedAccessControlList.PublicRead);
Console.WriteLine("Set bucket ACL succeeded");
}
catch (Exception ex)
{
Console.WriteLine("Set bucket ACL failed. {0}", ex.Message);
}
}
提示:
- 完整代碼參考:GitHub
獲取儲存空間存取權限
獲取儲存空間存取權限可以使用以下代碼:
using Aliyun.OSS;
// 初始化OssClient
var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
/// <summary>
/// 獲取儲存空間的存取權限
/// </summary>
/// <param name="bucketName">儲存空間的名稱</param>
public void GetBucketAcl(string bucketName)
{
try
{
string bucketName = "your-bucket";
var acl = client.GetBucketAcl(bucketName);
Console.WriteLine("Get bucket ACL success");
foreach (var grant in acl.Grants)
{
Console.WriteLine("獲取儲存空間許可權成功,當前許可權:{0}", grant.Permission.ToString());
}
}
catch (Exception ex)
{
Console.WriteLine("Get bucket ACL failed. {0}", ex.Message);
}
}
提示:
- 完整代碼參考:GitHub
刪除儲存空間
下面代碼刪除了一個儲存空間
using Aliyun.OSS;
// 初始化OssClient
var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
/// <summary>
/// 刪除儲存空間
/// </summary>
/// <param name="bucketName">儲存空間的名稱</param>
public void DeleteBucket(string bucketName)
{
try
{
client.DeleteBucket(bucketName);
Console.WriteLine("Delete bucket succeeded");
}
catch (Exception ex)
{
Console.WriteLine("Delete bucket failed. {0}", ex.Message);
}
}
提示:
- 完整代碼參考:GitHub
重要:
- 如果儲存空間不為空(儲存空間中有檔案或者分區上傳碎片),則儲存空間無法刪除
- 必須先刪除儲存空間中的所有檔案後,儲存空間才能成功刪除。