【问题标题】:Read files in Azure blob storage from C#从 C# 读取 Azure Blob 存储中的文件
【发布时间】:2017-05-26 13:20:35
【问题描述】:

我在 Azure 存储中有一个 Blob 容器,然后是一个文件夹,然后是一个子文件夹,然后是不同的文件 (ContainerName/Folder1/Subfolder1/files...)。 如何读取Subfolder1 目录中的所有文件?假设我有一些 pdf 文件,我需要在我的应用程序中获取它们,我该怎么做?

【问题讨论】:

  • 你想阅读文件的内容还是仅仅列出它们?另外请告诉我们容器ACL是否设置为私有?
  • 目前我只想列出它们,容器 ACL 是私有的。我已经尝试使用容器引用ListBlobs(),但它只列出了最适合级别的文件夹(Folder1、Folder2 等,而不是 Subfolder1...等)
  • stackoverflow.com/questions/51855853/…你也可以试试这个方法。

标签: c# azure blob azure-blob-storage


【解决方案1】:

嗯,它并不是真正的子文件夹,它只是一条路径。

正如documentation for ListBlobs 所说:

您可以选择指定 blob 前缀以列出名称以相同字符串开头的 blob。如果在 blob 名称中使用分隔符来创建虚拟目录结构,则 blob 前缀可以包括全部或部分虚拟目录结构(但不包括容器名称)。

所以你可以使用 pass in Folder1/Subfolder1 作为前缀:

var container = blobClient.GetContainerReference(containerName);
foreach (var file in container.ListBlobs(prefix: "Folder1/Subfolder1", useFlatBlobListing: true))
{ 
    // etc

注意:我不记得前缀是否需要前导斜杠或尾随斜杠,或者两者都不需要。..

prefix 参数确保只有以参数值开头的 blob 名称才会作为列表的一部分返回。 useFlatBlobListing 参数将确保如果在前缀中指定的子文件夹内的嵌套文件夹中有任何 blob,也会返回。

【讨论】:

  • 你比我快一分钟 :)。如果我更新你的答案可以吗?还有一点我想提供的信息。
猜你喜欢
  • 2012-06-16
  • 1970-01-01
  • 2021-04-01
  • 1970-01-01
  • 2020-07-15
  • 2021-05-09
  • 2021-10-18
  • 1970-01-01
  • 2021-10-31
相关资源
最近更新 更多