c# - 无需正则表达式即可访问 Azure 容器的 Blob 名称

标签 c# azure

我尝试仅访问 Azure Blob 的文件名。例如,如果我当前返回字符串 privatecontainer/Text-pc.txt我正在尝试访问 Text-pc.txt 。问题是每个 Azure 容器内都有不同的文件。我列出了我正在使用的从用户指定的 Azure 容器生成 Blob 列表的代码。

MainRun()

 public static void MainRun()
    {
        var userInput = GetContainerNameFromUser();
        CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("STORAGE_CONNECTION_STRING"));

        CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

        CloudBlobContainer container = blobClient.GetContainerReference(userInput);

        foreach (var blobItem in container.ListBlobs(useFlatBlobListing: true))
        {
          Console.WriteLine(blobItem.Parent.Uri.MakeRelativeUri(blobItem.Uri));
         // The line above for-loop will access all the Blobs within a Container
        }
    }

有没有办法只访问 Text-pc.txt无需使用正则表达式?我想远离正则表达式的原因是 for当存在虚拟文件夹/目录时,上面的循环成功打印出文件名。但是,在具有不带虚拟文件夹/目录的 Blob 的容器上,它将打印 publiccontainer/Text-pc.txt(<container_name>/File_name) .

最佳答案

另一个解决方案可能是将 blobItem 转换为 CloudBlob 并使用其 Name 属性。像这样的东西:

        foreach (var blobItem in container.ListBlobs(useFlatBlobListing: true))
        {
                            Console.WriteLine((blobItem as CloudBlob).Name);
        }

请注意,对于虚拟文件夹中的 Blob,将打印完整路径 (虚拟文件夹名称/文件名),因为这是 Blob 的名称。如果您只需要文件名,您可能需要应用 Stephen 提出的解决方案并使用 / 分隔符分割字符串。

关于c# - 无需正则表达式即可访问 Azure 容器的 Blob 名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36754732/

相关文章:

C# 使用对象列表填充组合框并保持对象属性可访问

c# - 如何从人脸检测方 block 中获取一个 "mugshot"?

Azure Cosmos DB 存储过程不返回文档

python - 向模型发出请求的正确方法(通过 Azure ML Designer 部署)

python-3.x - 使用 python 访问 Azure webhook 数据

c# - 将可为空的 guid 传递给存储过程

c# - 检测 C# 应用程序中的窗口句柄泄漏

azure - Application Insights 中的可用性测试自动禁用

c# - 窗口服务的通知图标

sql-server - Cosmos DB 中的计算列,列基于另一列