如何从 C# Core 中的 azure blob 存储中读取所有文件

RaZ*_* PS 6 c# azure azure-storage azure-storage-blobs .net-core

我想从 azure blob 存储(文件夹内的文件)中读取文件,blob 存储包含许多文件夹。我想读取我的文件夹“blobstorage”,它包含许多 JSON 文件,对每个文件执行 .read 和一些操作。我尝试了许多不起作用的代码:

 CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString);
            CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
            CloudBlobContainer container = blobClient.GetContainerReference($"blobstorage");
Run Code Online (Sandbox Code Playgroud)

上面的代码使用“Microsoft.WindowsAzure.Storage”nuget 包。此代码未按预期工作。在堆栈溢出中找到的许多问题和答案中,我发现它们中的大多数已经过时并且不起作用。注意:如果有任何 nuget 也提到 bcs 它们是很多包

小智 9

我在这篇文章中找到了解决方案,并且非常适合我。您只需在下载后将其作为普通流读取即可。

BlobServiceClient blobServiceClient = new BlobServiceClient("connectionString");
BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient("containerName");
BlobClient blobClient = containerClient.GetBlobClient("blobName.csv");
if (await blobClient.ExistsAsync())
{
  var response = await blobClient.DownloadAsync();
  using (var streamReader= new StreamReader(response.Value.Content))
  {
    while (!streamReader.EndOfStream)
    {
      var line = await streamReader.ReadLineAsync();
      Console.WriteLine(line);
    }
  }
}
Run Code Online (Sandbox Code Playgroud)


Pan*_*wat 6

我没有看到任何使用 package.json 列出所有 blob 的选项Microsoft.WindowsAzure.Storage。如果您可以使用Azure.Storage.Blobs包,请尝试下面的代码。

using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using System;

namespace ConsoleApp2
{
    class Program
    {
        static string connectionString = "DefaultEndpointsProtocol=https;AccountName=storage******c9709;AccountKey=v**************************************;EndpointSuffix=core.windows.net";
        static string container = "azure-webjobs-hosts";
        static void Main(string[] args)
        {
            // Get a reference to a container named "sample-container" and then create it
            BlobContainerClient blobContainerClient = new BlobContainerClient(connectionString, container);
            blobContainerClient.CreateIfNotExists();
            Console.WriteLine("Listing blobs...");
            // List all blobs in the container
            var blobs = blobContainerClient.GetBlobs();
            foreach (BlobItem blobItem in blobs)
            {
                Console.WriteLine("\t" + blobItem.Name);
            }            
            Console.Read();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

输出

在此输入图像描述

您还可以下载 blob 的内容,请查看此链接

  • 它只是列出所有文件。我想读取特定文件夹中的所有文件 (2认同)