使用 .NET 创建 BLOb 容器

Azure 存储中的 Blob 已组织成容器。 必须先创建容器,才能上传 Blob。 本文介绍了如何使用适用于 .NET 的 Azure 存储客户端库来创建容器。

先决条件

  • 本文假设已经设置了项目来使用适用于 .NET 的 Azure Blob 存储客户端库。 要了解有关设置项目的信息,包括包安装、添加 using 指令和创建授权客户端对象,请参阅开始使用 Azure Blob 存储和 .NET
  • 授权机制必须具有创建 blob 容器的权限。 若要了解详细信息,请参阅以下 REST API 操作的授权指南:

关于容器命名

容器名称必须是有效的 DNS 名称,因为它是用于对容器或其 Blob 寻址的唯一 URI 的一部分。 为容器命名时,请遵循以下规则:

  • 容器名称的长度可以是 3 到 63 个字符。
  • 容器名称必须以字母或数字开头,并且只能包含小写字母、数字和短划线 (-) 字符。
  • 容器名称中不允许出现连续的短划线字符。

容器资源的 URI 的格式如下:

https://my-account-name.blob.core.chinacloudapi.cn/my-container-name

创建容器

若要创建容器,请从 BlobServiceClient 类中调用以下方法之一:

还可以使用 BlobContainerClient 类中的以下方法之一创建容器:

如果已存在同名的容器,这些方法将引发异常。

将立即在存储帐户下创建容器。 无法将一个容器嵌套在另一个容器下。

以下示例使用 BlobServiceClient 对象异步创建容器:

//-------------------------------------------------
// Create a container
//-------------------------------------------------
private static async Task<BlobContainerClient> CreateSampleContainerAsync(BlobServiceClient blobServiceClient)
{
    // Name the sample container based on new GUID to ensure uniqueness.
    // The container name must be lowercase.
    string containerName = "container-" + Guid.NewGuid();

    try
    {
        // Create the container
        BlobContainerClient container = await blobServiceClient.CreateBlobContainerAsync(containerName);

        if (await container.ExistsAsync())
        {
            Console.WriteLine("Created container {0}", container.Name);
            return container;
        }
    }
    catch (RequestFailedException e)
    {
        Console.WriteLine("HTTP error code {0}: {1}",
                            e.Status, e.ErrorCode);
        Console.WriteLine(e.Message);
    }

    return null;
}

创建根容器

根容器充当存储帐户的默认容器。 每个存储帐户只能包含一个根容器,该容器必须命名为 $root。 必须显式创建或删除根容器。

可以引用存储在根容器中的 Blob,而无需包含根容器名称。 根容器允许引用位于存储帐户层次结构顶层的 Blob。 例如,可通过以下方式引用根容器中的 blob:

https://myaccount.blob.core.chinacloudapi.cn/default.html

以下示例以同步方式创建根容器:

//-------------------------------------------------
// Create root container
//-------------------------------------------------
private static void CreateRootContainer(BlobServiceClient blobServiceClient)
{
    try
    {
        // Create the root container or handle the exception if it already exists
        BlobContainerClient container =  blobServiceClient.CreateBlobContainer("$root");

        if (container.Exists())
        {
            Console.WriteLine("Created root container.");
        }
    }
    catch (RequestFailedException e)
    {
        Console.WriteLine("HTTP error code {0}: {1}",
                            e.Status, e.ErrorCode);
        Console.WriteLine(e.Message);
    }
}

资源

若要详细了解如何使用适用于 .NET 的 Azure Blob 存储客户端库来创建容器,请参阅以下资源。

REST API 操作

Azure SDK for .NET 包含基于 Azure REST API 而生成的库,允许你通过熟悉的 .NET 范例与 REST API 操作进行交互。 用于创建容器的客户端库方法使用以下 REST API 操作:

客户端库资源