gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 12:32:24 26 4
gpt4 key购买 nike

这些是在不同版本的 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();
不理解 GetDirectoryReference 且似乎没有直接翻译的地方
此外,CloudBlobDirectory 的概念似乎并没有进入 Azure.Storage.Blobs,例如
        private static long GetDirectorySize(CloudBlobDirectory directoryBlob) {
long size = 0;

foreach (var blobItem in directoryBlob.ListBlobs()) {
if (blobItem is BlobClient)
size += ((BlobClient) blobItem).GetProperties().Value.ContentLength;

if (blobItem is CloudBlobDirectory)
size += GetDirectorySize((CloudBlobDirectory) blobItem);
}

return size;
}
CloudBlobDirectory 没有出现在 api 中的任何地方

最佳答案

Azure Blob 存储中没有物理目录或文件夹之类的东西。您有时看到的目录是 blob 的一部分(例如 folder1/folder2/file1.txt )。 List Blobs requests允许你在调用中添加前缀和分隔符,Azure 门户和 Azure 数据资源管理器使用它们来创建文件夹的可视化。例如前缀 folder1/和分隔符 /将允许您查看内容,就像打开了文件夹 1 一样。
这正是您的代码中发生的事情。 GetDirectoryReference()添加前缀。 ListBlobs()触发请求和 Any()检查是否有任何元素返回。
对于 V12,允许您执行相同操作的命令是 GetBlobsByHierarchy及其异步版本。在您只想知道目录中是否存在任何 blob 的特定情况下, GetBlobs带前缀也足够了。

关于azure-storage - 从 Microsoft.Azure.Storage.Blob 迁移到 Azure.Storage.Blobs - 缺少目录概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64480360/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com