【问题标题】:How is the prefix parameter used in CloudBlobContainer.ListBlobs() to get files from a virtual folder in Azure blob storageCloudBlobContainer.ListBlobs() 中如何使用前缀参数从 Azure Blob 存储中的虚拟文件夹获取文件
【发布时间】:2019-06-15 23:01:10
【问题描述】:

我正在尝试在 Azure Blob 存储中的单个虚拟文件夹中获取列表。这些文件被组织在 /{container}/{classification}/{title} 文件夹结构中,所有文件都在“title”虚拟文件夹中。

这是我使用的函数,它不带前缀但在我提供前缀时无法返回任何结果。

public static List<string> List(string classification, string title, StorageAccount sa)
{
    List<string> fileList = new List<string>();
    CloudBlobContainer container = GetBlobContainer(sa);
    var prefix = $"/{container.Name}/{classification}/{title}/";
    Console.WriteLine(prefix);

    var list = container.ListBlobs(prefix, useFlatBlobListing: true);

    foreach (var blob in list)
    {
        var blobFileName = blob.Uri.AbsolutePath;
        fileList.Add(blobFileName);
    }

    return fileList;
}

【问题讨论】:

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


    【解决方案1】:

    您不需要在前缀中包含容器名称。请更改以下代码行:

    var prefix = $"/{container.Name}/{classification}/{title}/";
    

    到:

    var prefix = $"{classification}/{title}/";
    

    这将列出所有以该前缀开头的 blob 名称。

    【讨论】:

    • 前缀中可以包含的级别数量是否有限制?如果我以两个“文件夹”级别为前缀,它就可以工作。如果我以三个级别为前缀,则它不会返回任何内容。我将 useFlatBlobListing 设置为 true。
    • @Moloch 我认为没有任何限制。我建议发布另一个包含所有相关详细信息的问题。
    猜你喜欢
    • 2021-10-21
    • 2019-01-07
    • 2023-01-16
    • 1970-01-01
    • 1970-01-01
    • 2019-11-07
    • 2021-04-20
    • 2018-07-08
    • 1970-01-01
    相关资源
    最近更新 更多