从 Microsoft.Azure.Storage.Blob 迁移到 Azure.Storage.Blobs - 缺少目录概念

joh*_*ley 7 azure-storage

这些是在不同版本的 NuGet 包之间迁移的重要指南:

https://github.com/Azure/azure-sdk-for-net/blob/Azure.Storage.Blobs_12.6.0/sdk/storage/Azure.Storage.Blobs/README.md

https://elcamino.cloud/articles/2020-03-30-azure-storage-blobs-net-sdk-v12-upgrade-guide-and-tips.html

然而,我正在努力在代码中迁移以下概念:

// Return if a directory exists:
container.GetDirectoryReference(path).ListBlobs().Any();
Run Code Online (Sandbox Code Playgroud)

哪里GetDirectoryReference不明白并且似乎没有直接翻译。

此外,a 的概念CloudBlobDirectory似乎并未出现在Azure.Storage.Blobs例如

// Return if a directory exists:
container.GetDirectoryReference(path).ListBlobs().Any();
Run Code Online (Sandbox Code Playgroud)

whereCloudBlobDirectory没有出现在 API 中的任何地方。

404*_*404 3

Azure Blob 存储中不存在物理目录或文件夹之类的东西。您有时看到的目录是 blob 的一部分(例如folder1/folder2/file1.txt)。列表Blob 请求允许你在调用中添加前缀和分隔符,Azure 门户和 Azure 数据资源管理器使用它们来创建文件夹的可视化。例如,前缀folder1/和分隔符/将允许您查看内容,就像打开了folder1一样。

这正是您的代码中发生的情况。添加GetDirectoryReference()前缀。触发ListBlobs()请求并Any()检查是否有任何项目返回。

对于 V12,允许您执行相同操作的命令是GetBlobsByHierarchy及其异步版本。在您只想知道目录中是否存在任何 blob 的特定情况下,带有前缀的GetBlobs也足够了。