繁体   English   中英

如何在一个 azure 存储中读取来自不同路径的所有 blob

[英]How to read all blobs from different path in one azure storage

我遵循了关于在 azure IoT Hub 中路由的微软教程,现在我所有来自 iot hub 的消息都存储在容器中的 blob 中。 但是,每个 blob 都位于单独的文件夹中。 例如,2018 年 11 月 3 日 19:53 发送的消息存储在 xyz/00/2018/11/03/19/53 blob 文件中。 如何从容器中的所有文件夹中获取所有 blob? 我不能使用 CloudBlobContainer.ListBlobs() 因为我没有这个方法。 我试过了:

        CloudStorageAccount storageAccount = CloudStorageAccount.Parse(StorageConnectionString);
        CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
        CloudBlobContainer blobContainer = blobClient.GetContainerReference(storageContainerName);
        CloudBlob blob = blobContainer.GetBlockBlobReference("xyz/00/2018/11/03/20/15");
        MemoryStream stream = new MemoryStream();
        await blob.DownloadToStreamAsync(stream);
        return Encoding.UTF8.GetString(stream.ToArray());

并且此代码返回位于 xyz/00/2018/11/03/20/15 中的 blob 的内容但是,如果我尝试使用以下代码遍历 Blob,则它仅返回“https://{storageName}.blob.core。 windows.net/{containerName}/{xyz}/"

            List<string> blobs = new List<string>();
        BlobResultSegment resultSegment = blobContainer.ListBlobsSegmentedAsync(null).Result;
        foreach (IListBlobItem item in resultSegment.Results)
        {
            if (item.GetType() == typeof(CloudBlockBlob))
            {
                CloudBlockBlob blob = (CloudBlockBlob)item;
                blobs.Add(blob.Name);
            }
            else if (item.GetType() == typeof(CloudPageBlob))
            {
                CloudPageBlob blob = (CloudPageBlob)item;
                blobs.Add(blob.Name);
            }
            else if (item.GetType() == typeof(CloudBlobDirectory))
            {
                CloudBlobDirectory dir = (CloudBlobDirectory)item;
                blobs.Add(dir.Uri.ToString());
            }
        }

        var result = String.Join(", ", blobs.ToArray());
        return result;

我在这里缺少什么? 如何从容器中获取每个 blob?

使用过载ListBlobsSegmentedAsync接受的useFlatBlobListing和设置的值useFlatBlobListingtrue

使用FlatBlobListing
一个布尔值,指定是在平面列表中列出 blob,还是按虚拟目录分层列出 blob。

来源

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM