如何使用 C# 中的 Azure.Storage.Blobs 从 Azure 存储 Blob 以 ByteArray 格式获取文件

Posted

技术标签:

【中文标题】如何使用 C# 中的 Azure.Storage.Blobs 从 Azure 存储 Blob 以 ByteArray 格式获取文件【英文标题】:How to get file from Azure storage blob in a ByteArray format using Azure.Storage.Blobs in C# 【发布时间】:2021-03-14 22:05:27 【问题描述】:

我需要使用新包 Azure.Storage.Blobs 从 Azure 存储中获取字节数组格式的文件。我无法找到在 C# 中执行此操作的方法。

public byte[] GetFileFromAzure()

byte[] filebytes; 
    BlobServiceClient blobServiceClient = new BlobServiceClient( "TestClient");
BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient("TestContainer");
BlobClient blobClient = containerClient.GetBlobClient("te.xlsx");
    if (blobClient.ExistsAsync().Result)

    var response = blobClient.DownloadAsync().Result;
    using (var streamReader = new StreamReader(response.Value.Content))
    
        var line = streamReader.ReadToEnd();
        //No idea how to convert this to ByteArray
    

return filebytes;

知道如何获得存储在 Azure blob 存储上的文件字节数组吗?

感谢帮助。

【问题讨论】:

blobClient 有一个方法叫DownloadToByteArray() @DavidTansey:没有,只有4种方法,Donwload、DownloadAsync、DownloadTo、DownloadToAsync 我的立场是正确的。谢谢你。请参阅我的答案以获取使用 BlobClient.DownloadTo( stream ) 的建议方法 @DavidTansey:是的,下面的代码按预期工作。 【参考方案1】:

尝试以下操作将 Blob 作为流读取,然后在返回时将该流转换为字节数组:

public byte[] GetFileFromAzure()

    BlobServiceClient blobServiceClient = new BlobServiceClient( "TestClient");
    BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient("TestContainer");
    BlobClient blobClient = containerClient.GetBlobClient("te.xlsx");
    
    if (blobClient.ExistsAsync().Result)
    
        using (var ms = new MemoryStream())
        
            blobClient.DownloadTo(ms);
            return ms.ToArray();
        
       
    return new byte[];  // returns empty array

【讨论】:

以上是关于如何使用 C# 中的 Azure.Storage.Blobs 从 Azure 存储 Blob 以 ByteArray 格式获取文件的主要内容,如果未能解决你的问题,请参考以下文章

azure storage / c#:从容器中的目录下载所有文件

C#:使用 Azure.Storage.Blobs 客户端库将 blob 从一个容器移动到另一个容器

无法使用 Azure.Storage.Blobs NuGet 包将文件上传到 Azure Blob 存储

如何将 blob 上传到 C# 函数中的现有容器

如何使用 SAS 令牌从 C# 连接到 Azure BlobStorage?

如何更新 Azure.Storage.Blob 中的元数据