全部产品
对象存储 OSS

管理Bucket

更新时间:2017-06-07 13:26:11   分享:   

存储空间(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. }

提示:

重要:

  • 如果存储空间不为空(存储空间中有文件或者分片上传碎片),则存储空间无法删除
  • 必须先删除存储空间中的所有文件后,存储空间才能成功删除。
本文导读目录
本文导读目录
以上内容是否对您有帮助?