为啥 Azure API 不列出名为 /folder/folder/file 的 blob?

Posted

技术标签:

【中文标题】为啥 Azure API 不列出名为 /folder/folder/file 的 blob?【英文标题】:Why doesn't Azure API list the blobs that is named /folder/folder/file?为什么 Azure API 不列出名为 /folder/folder/file 的 blob? 【发布时间】:2017-07-12 04:42:33 【问题描述】:

我想创建文件夹和子文件夹,我找到了this workaround: 但是当我列出它们时:使用此代码(source):

foreach (IListBlobItem item in Container.ListBlobs(null, false))
            
                if (item.GetType() == typeof(CloudBlockBlob))
                
                    CloudBlockBlob blob = (CloudBlockBlob)item;

                    Console.WriteLine("Block blob of length 0: 1", blob.Properties.Length, blob.Uri);

                
                else if (item.GetType() == typeof(CloudPageBlob))
                
                    CloudPageBlob pageBlob = (CloudPageBlob)item;

                    Console.WriteLine("Page blob of length 0: 1", pageBlob.Properties.Length, pageBlob.Uri);

                
                else if (item.GetType() == typeof(CloudBlobDirectory))
                
                    CloudBlobDirectory directory = (CloudBlobDirectory)item;

                    Console.WriteLine("Directory: 0", directory.Uri);
                
            

它只显示根容器中的父文件夹和 blob。 我期待将它们全部作为 blob 获取,因为这是虚拟目录而不是真实的, 例如我有这个文件

https://account.blob.core.windows.net/container/Accounts/Images/1/acc.jpg

但它不显示,它只是显示:

https://account.blob.core.windows.net/container/Accounts

https://account.blob.core.windows.net/container/anyfile

我是否必须请求父文件夹中的子文件夹才能访问该文件?

【问题讨论】:

【参考方案1】:

请尝试在ListBlobs 方法中将第二个参数指定为true。此参数指示您是需要平面 blob 列表 (true) 还是分层 blob 列表 (false)。

来自文档链接:

使用FlatBlobListing

类型:System.Boolean

一个布尔值,指定是否在平面中列出 blob 按虚拟列出,或者是否按层次列出 Blob 目录。

【讨论】:

【参考方案2】:

如果有人正在使用最新的 Azure.Storage.Blobs SDK 寻找此类平面文件列表,您可以这样做:

BlobServiceClient blobServiceClient = new BlobServiceClient(connectionString);
BlobContainerClient blobContainerClient = blobServiceClient.GetBlobContainerClient(resource.Name);
var blobItemList = blobContainerClient.GetBlobs(); // This will get blobs without any hierarchy

【讨论】:

以上是关于为啥 Azure API 不列出名为 /folder/folder/file 的 blob?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Azure 管理 API 列出容器组失败并出现 System.Net.Sockets.SocketException

为啥会创建一个名为 Azure Blob 存储容器内文件夹名称的空文件?

Azure Data Lake Storage Gen2 REST API - 列出文件系统 - “代码”:“AuthorizationPermissionMismatch

为啥下面的代码不能得到 n fold = 1 的值?

为啥 Power Query 调用 Azure API 管理后端 URL?

无法使用 Databricks 列出 Azure Storage Gen 2 文件