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

rggaifut  于 2023-06-07  发布在  .NET
关注(0)|答案(2)|浏览(228)

我需要使用新的包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存储上的文件的字节数组吗?
感谢帮助。

piok6c0g

piok6c0g1#

尝试以下方法将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
}
iyr7buue

iyr7buue2#

我已经尝试了上面的代码。但我得到下面的错误。
System.IO.FileNotFoundException:“未能加载文件或程序集“System.Runtime.CompilerServices.Unsafe,Version=4.0.4.1,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”或它的某一个依赖项。系统找不到指定的文件。'谁能指导我如何解决上述错误。
使用.NET Framework 4.6.1

相关问题