获取Azure Blob容器

3
我正在尝试获取容器(如果存在),如果不存在则创建它。
我的困惑在于GetBlobContainersAsync返回一个BlobContainerItem,而CreateBlobContainerAsync返回一个BlobContainerClient
当我找到容器时,如何从BlobContainerItem获取BlobContainerClient
以下是我目前的代码:
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个回答

9

您不必做所有这些。

只需使用连接字符串和容器名称创建 BlobContainerClient 实例,然后调用 CreateIfNotExistsAsync 方法。如果该容器不存在,此方法将创建容器。

从文档中了解:

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

示例如下:

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

要使用授权的BlobServiceClient(通常通过DI),可以使用相同的方法,通过实例化BlobContainerClient并使用BlobServiceClient.GetBlobContainerClient("containerName");来进行操作。 - noontz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接