如何在 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 存储 [Azure-Blob][REST] 中的 Blob 列表获取特定元数据