阿里雲團隊努力不懈,力求將最新的技術內容更快地以您最熟悉的語言呈現。本文由簡體中文內容自動轉碼而成,過程無人工干預。阿里雲不保證此自動轉碼的準確性、完整性及時效性。因轉碼造成的任何內容錯誤及因此可能帶來的損失,阿里雲概不負責,敬請見諒。本文内容請以簡體中文版本為準。
全部產品
Search
文件中心

管理Bucket

更新時間: Oct 19, 2018

儲存空間(Bucket)是OSS上的命名空間,也是計費、許可權控制、日誌記錄等進階功能的管理實體;

新建儲存空間

如下代碼可以新建一個儲存空間:

  1. using Aliyun.OSS;
  2. // 初始化OssClient
  3. var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
  4. /// <summary>
  5. /// 建立一個新的儲存空間(Bucket)
  6. /// </summary>
  7. /// <param name="bucketName">儲存空間的名稱</param>
  8. public void CreateBucket(string bucketName)
  9. {
  10. try
  11. {
  12. // 新建一個Bucket
  13. client.CreateBucket(bucketName);
  14. Console.WriteLine("Create bucket succeeded");
  15. }
  16. catch (Exception ex)
  17. {
  18. Console.WriteLine("Create bucket failed. {0}", ex.Message);
  19. }
  20. }

提示:

重要:

  • 由於儲存空間的名字是全域唯一的,所以必須保證您的BucketName不與別人重複。

列出使用者所有的儲存空間

下面代碼可以列出使用者所有的儲存空間:

  1. using Aliyun.OSS;
  2. // 初始化OssClient
  3. var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
  4. /// <summary>
  5. /// 列出賬戶下所有的儲存空間資訊
  6. /// </summary>
  7. public void ListBuckets()
  8. {
  9. try
  10. {
  11. var buckets = client.ListBuckets();
  12. Console.WriteLine("List bucket succeeded");
  13. foreach (var bucket in buckets)
  14. {
  15. Console.WriteLine("Bucket name:{0},Location:{1},Owner:{2}", bucket.Name, bucket.Location, bucket.Owner);
  16. }
  17. }
  18. catch (Exception ex)
  19. {
  20. Console.WriteLine("List bucket failed. {0}", ex.Message);
  21. }
  22. }

提示:

使用CNAME進行訪問

當使用者將自己的網域名稱CNAME指向自己的一個儲存空間的網域名稱後,使用者可以使用自己的網域名稱來訪問OSS:如果需要使用CNAME,需要將ClientConfigration中的IsCname設定為true

  1. using Aliyun.OSS;
  2. using Aliyun.OSS.Common;
  3. /// <summary>
  4. /// 通過CNAME上傳檔案
  5. /// </summary>
  6. public void PutObjectByCname()
  7. {
  8. try
  9. {
  10. // 比如你的網域名稱"http://my-cname.com"CNAME指向你的儲存空間網域名稱"mybucket.oss-cn-hangzhou.aliyuncs.com"
  11. // 建立ClientConfiguration執行個體
  12. var conf = new ClientConfiguration();
  13. // 配置使用Cname
  14. conf.IsCname = true;
  15. var client = new OssClient("http://my-cname.com/", accessKeyId, accessKeySecret, conf);
  16. var result = client.putObject("mybucket", key, fileToUpload);
  17. Console.WriteLine("Put object succeeded");
  18. }
  19. catch (Exception ex)
  20. {
  21. Console.WriteLine("Put object failed. {0}", ex.Message);
  22. }
  23. }

提示:

提示:

  • 使用者只需要在建立OssClinet類執行個體時,將原本填入該儲存空間的endpoint更換成CNAME後的網域名稱,且將ClientConfiguration的參數IsCname設定為true。
  • 同時需要注意的是,使用該OssClient執行個體的後續操作中,儲存空間的名稱只能填成被指向的儲存空間名稱。

判斷儲存空間是否存在

判斷儲存空間是否存在可以使用以下代碼:

  1. using Aliyun.OSS;
  2. // 初始化OssClient
  3. var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
  4. /// <summary>
  5. /// 判斷儲存空間是否存在
  6. /// </summary>
  7. /// <param name="bucketName">儲存空間的名稱</param>
  8. public void DoesBucketExist(string bucketName)
  9. {
  10. try
  11. {
  12. var exist = client.DoesBucketExist(bucketName);
  13. Console.WriteLine("Check object Exist succeeded");
  14. Console.WriteLine("exist ? {0}", exist);
  15. }
  16. catch (Exception ex)
  17. {
  18. Console.WriteLine("Check object Exist failed. {0}", ex.Message);
  19. }
  20. }

提示:

設定儲存空間存取權限

設定儲存空間存取權限可以使用以下代碼:

  1. using Aliyun.OSS;
  2. // 初始化OssClient
  3. var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
  4. /// <summary>
  5. /// 設定儲存空間的存取權限
  6. /// </summary>
  7. /// <param name="bucketName">儲存空間的名稱</param>
  8. public void SetBucketAcl(string buckteName)
  9. {
  10. try
  11. {
  12. // 指定Bucket ACL為公共讀
  13. client.SetBucketAcl(bucketName, CannedAccessControlList.PublicRead);
  14. Console.WriteLine("Set bucket ACL succeeded");
  15. }
  16. catch (Exception ex)
  17. {
  18. Console.WriteLine("Set bucket ACL failed. {0}", ex.Message);
  19. }
  20. }

提示:

獲取儲存空間存取權限

獲取儲存空間存取權限可以使用以下代碼:

  1. using Aliyun.OSS;
  2. // 初始化OssClient
  3. var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
  4. /// <summary>
  5. /// 獲取儲存空間的存取權限
  6. /// </summary>
  7. /// <param name="bucketName">儲存空間的名稱</param>
  8. public void GetBucketAcl(string bucketName)
  9. {
  10. try
  11. {
  12. string bucketName = "your-bucket";
  13. var acl = client.GetBucketAcl(bucketName);
  14. Console.WriteLine("Get bucket ACL success");
  15. foreach (var grant in acl.Grants)
  16. {
  17. Console.WriteLine("獲取儲存空間許可權成功,當前許可權:{0}", grant.Permission.ToString());
  18. }
  19. }
  20. catch (Exception ex)
  21. {
  22. Console.WriteLine("Get bucket ACL failed. {0}", ex.Message);
  23. }
  24. }

提示:

刪除儲存空間

下面代碼刪除了一個儲存空間

  1. using Aliyun.OSS;
  2. // 初始化OssClient
  3. var client = new OssClient(endpoint, accessKeyId, accessKeySecret);
  4. /// <summary>
  5. /// 刪除儲存空間
  6. /// </summary>
  7. /// <param name="bucketName">儲存空間的名稱</param>
  8. public void DeleteBucket(string bucketName)
  9. {
  10. try
  11. {
  12. client.DeleteBucket(bucketName);
  13. Console.WriteLine("Delete bucket succeeded");
  14. }
  15. catch (Exception ex)
  16. {
  17. Console.WriteLine("Delete bucket failed. {0}", ex.Message);
  18. }
  19. }

提示:

重要:

  • 如果儲存空間不為空(儲存空間中有檔案或者分區上傳碎片),則儲存空間無法刪除
  • 必須先刪除儲存空間中的所有檔案後,儲存空間才能成功刪除。