存储空间(Bucket)是存储对象(Object)的容器。对象都隶属于存储空间。

创建存储空间

创建存储空间的完整代码请参见GitHub

以下代码用于创建存储空间:

using Aliyun.OSS;

// 初始化OssClient。
var client = new OssClient(endpoint, accessKeyId, accessKeySecret);

// 创建存储空间(Bucket)。
public void CreateBucket(string bucketName)
{
    try
    {
        // 创建存储空间。BucketName具有全局唯一性。
        client.CreateBucket(bucketName);
        Console.WriteLine("Create bucket succeeded");
    }
    catch (Exception ex)
    {
        Console.WriteLine("Create bucket failed. {0}", ex.Message);
    }
}

列举存储空间

列举存储空间的完整代码请参见GitHub

以下代码用于列举所有的存储空间:

using Aliyun.OSS;

// 初始化OSSClient实例。
var client = new OssClient(endpoint, accessKeyId, accessKeySecret);

// 列出账户下所有的存储空间信息。
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

以下代码用于判断存储空间是否存在:

using Aliyun.OSS;

// 初始化OSSClient实例。
var client = new OssClient(endpoint, accessKeyId, accessKeySecret);

// 判断存储空间是否存在。
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

存储空间的访问权限(ACL)有以下三类:

访问权限 描述 访问权限值
私有 存储空间的拥有者和授权用户有该存储空间内的文件的读写权限,其他用户没有权限操作该存储空间内的文件。 oss.ACLPrivate
公共读 存储空间的拥有者和授权用户有该存储空间内的文件的读写权限,其他用户只有该存储空间内的文件的读权限。请谨慎使用该权限。 oss.ACLPublicRead
公共读写 所有用户都有该存储空间内的文件的读写权限。请谨慎使用该权限。 oss.ACLPublicReadWrite

以下代码用于设置存储空间的访问权限:

using Aliyun.OSS;

// 初始化OSSClient实例。
var client = new OssClient(endpoint, accessKeyId, accessKeySecret);

// 设置存储空间的访问权限。
public void SetBucketAcl(string buckteName)
{
    try
    {
        // 设置存储空间的访问权限为公共读。
        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);

// 获取存储空间的访问权限。
public void GetBucketAcl(string bucketName)
{
    try
    {
        string bucketName = "your-bucket";
        var acl = client.GetBucketAcl(bucketName);

        Console.WriteLine("Get bucket ACL success",acl.ACL.ToString());
    }
    catch (Exception ex)
    {
        Console.WriteLine("Get bucket ACL failed. {0}", ex.Message);
    }
}

删除存储空间

删除存储空间的完整代码请参见GitHub

删除存储空间之前,必须先删除存储空间下的所有文件、LiveChannel和分片上传产生的碎片。

说明 要删除分片上传产生的碎片,首先使用Bucket.ListMultipartUploads列举出所有碎片,然后使用Bucket.AbortMultipartUpload删除这些碎片。

以下代码用于删除存储空间:

using Aliyun.OSS;

// 初始化OSSClient实例。
var client = new OssClient(endpoint, accessKeyId, accessKeySecret);

// 删除存储空间。
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);
    }
}