如何在 Azure 的子容器中获取 Blob 列表

Posted

技术标签:

【中文标题】如何在 Azure 的子容器中获取 Blob 列表【英文标题】:How to get a list of blobs in a sub container in Azure 【发布时间】:2022-01-15 10:00:54 【问题描述】:

我需要使用 url 从存储中获取所有文件:“https://example.blob.core.windows.net/file/subfile1/subfile2” 我只需要读取数据文件(例如,只有 .txt,所以如果我有 .jpg 或其他文件,我应该跳过这些文件)并且只需要从 subfile2 读取,而不是整个存储。

用 c# 顺便说一句

【问题讨论】:

嗨@Wolfie,如果以下答案对您有帮助,您可以接受它作为答案(单击答案旁边的复选标记将其从灰色切换为已填充。)。这对其他社区成员可能是有益的。谢谢 【参考方案1】:

我尝试在我的系统中下载容器子文件夹中的所有 txt 文件(test 是容器,test1 是容器中的文件夹),试试这个代码。

using Microsoft.Azure.Storage.Blob;
using System;
using System.Collections.Generic;
using System.IO;

namespace listtxtblobs

    class Program
    
        static void Main(string[] args)
        
            Console.WriteLine("Hello World!");
            CloudStorageAccount storageAccount = CloudStorageAccount.Parse("Connection string");
            CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
            CloudBlobContainer container = blobClient.GetContainerReference("test//container name");

            List<string> blobnames = new List<string>();
           
            var allblobs = container.ListBlobs(useFlatBlobListing: true);
            foreach (var b in allblobs)
            
                
                string name = ((CloudBlockBlob)b).Name;
                Console.WriteLine(name);
                string[] names = name.Split('/');
                blobnames.Add(names[names.Length - 1]);




            
            foreach(string name in blobnames)
            
                Console.WriteLine(name);
                if (name.Contains(".txt"))
                
                    string filePath = "local file path\\" + name;
                    CloudBlockBlob blockBlob = container.GetBlockBlobReference("test1\\"+ name);
                    blockBlob.DownloadToFile(filePath, FileMode.OpenOrCreate);
                    
                
            
        
    

Azure 存储中的文件夹结构

输出

已下载本地文件夹中的所有txt文件

【讨论】:

感谢您的帮助

以上是关于如何在 Azure 的子容器中获取 Blob 列表的主要内容,如果未能解决你的问题,请参考以下文章

列出 Azure 存储容器中的 Blob,包括元数据

获取容器中 Azure blob 文件的名称列表?

Azure Blob 存储从特定目录而不是容器获取文件列表

仅从 Azure 存储 [Azure-Blob][REST] 中的 Blob 列表获取特定元数据

如何通过 API 调用从 azure 容器中获取 blob 数据?

获取子文件夹 Azure 中的 blob 列表