获取Azure Blob容器

时间:2020-05-17 22:02:35

标签: c# azure azure-storage azure-storage-blobs

我正在尝试获取一个容器(如果不存在)来创建它。

我的困惑是因为GetBlobContainersAsync返回了BlobContainerItem,而CreateBlobContainerAsync返回了BlobContainerClient

找到容器后,如何从BlobContainerClient获取BlobContainerItem

这是我到目前为止所拥有的:

var blobServiceClient = new BlobServiceClient(this.ConnectionString);

BlobContainerItem archiveContainer = null;
await foreach (var container in blobServiceClient.GetBlobContainersAsync(prefix: Uploader.ContainerName))
{
    if (String.Compare(container.Name, Uploader.ContainerName,
        CultureInfo.CurrentCulture, CompareOptions.Ordinal) == 0)
    {
        archiveContainer = ???
        break;
    }
}

if (archiveContainer == null)
{
    archiveContainer = await blobServiceClient.CreateBlobContainerAsync(Uploader.ContainerName);
}

1 个答案:

答案 0 :(得分:6)

您实际上不必执行所有这些操作。

使用连接字符串和容器名称简单地创建BlobContainerClient的实例,然后在其上调用CreateIfNotExistsAsync。如果该容器不存在,则此方法将创建该容器。

从文档中:

CreateIfNotExistsAsync(PublicAccessType, IDictionary<String,String>, BlobContainerEncryptionScopeOptions, CancellationToken)操作在指定的帐户下创建一个新容器。
如果同名容器已经存在,则不会更改

类似的东西:

var blobContainerClient = new BlobContainerClient(this.ConnectionString, Uploader.ContainerName);
await blobContainerClient.CreateIfNotExistsAsync();