如何下载 Block Blob (Base64) 文件并使用 Azure Blob 存储将其转换为 PNG?

Posted

技术标签:

【中文标题】如何下载 Block Blob (Base64) 文件并使用 Azure Blob 存储将其转换为 PNG?【英文标题】:How download Block Blob (Base64) file and convert it to PNG using Azure Blob Storage? 【发布时间】:2021-10-20 11:12:09 【问题描述】:

我目前正在开发一个网站,该网站将从 Azure Blob 存储下载 Blob 文件并显示为图像。该文件已保存为 Base64,我在将文件下载到流时遇到问题。我尝试了多种方法,一切都没有结果。这是我目前所拥有的:

[HttpGet]
    public async IActionResult ViewFile(string name)
    

        BlobServiceClient blobServiceClient = new BlobServiceClient(System.Environment.GetEnvironmentVariable("BlobConnection"));

        BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient("store-images");

        // this will allow us access to the file inside the container via the file name
        //var blob = containerClient.GetBlobs(prefix: name);

        //var blobContainerUri = containerClient.GetBlobClient(name);

        BlobClient blob = containerClient.GetBlobClient(name);

        MemoryStream stream = new MemoryStream();

        await blob.DownloadStreamingAsync(stream);

        stream.Position = 0;

        return stream;
    

【问题讨论】:

请编辑您的问题并包含您尝试过的代码以及您遇到的问题。到目前为止,我们根本不知道您尝试了哪些方法。 你是如何消费流的?你能分享那个代码吗? 我对此非常陌生,我拥有的其他代码只是一个 html 视图。这就是我的控制器所拥有的。 @GauravMantri 【参考方案1】:

这是对我有用的逻辑

string storageAccount_connectionString = "**Enter Connection String**";

CloudStorageAccount mycloudStorageAccount = CloudStorageAccount.Parse(storageAccount_connectionString);
CloudBlobClient blobClient = mycloudStorageAccount.CreateCloudBlobClient();

CloudBlobContainer container = blobClient.GetContainerReference(azure_ContainerName);
CloudBlockBlob cloudBlockBlob = container.GetBlockBlobReference(filetoDownload);           

// provide the file download location below            
Stream file = File.OpenWrite(@"C:\location" + filetoDownload);

cloudBlockBlob.DownloadToStream(file);
file.Close();

//Converting Base64 to png
string base64String = File.ReadAllText(@"C:\location\base64.txt");
byte[] imgBytes = Convert.FromBase64String(base64String);

using (var imageFile = new FileStream(@"C:\location\sample.png", FileMode.Create))

       imageFile.Write(imgBytes, 0, imgBytes.Length);
       imageFile.Flush();

参考:Blog to convert base64 to png

Download blob from storage

【讨论】:

如果我的回答对您有帮助,您可以接受它作为答案(单击答案旁边的复选标记,将其从灰色切换为已填充)。这对其他社区成员可能是有益的。谢谢

以上是关于如何下载 Block Blob (Base64) 文件并使用 Azure Blob 存储将其转换为 PNG?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 blob 图像转换为 base64? base64 变量显示为空

MySQL - Base64 与 BLOB

oracle中如何实现blob和base64相互转换

a标签 download base64 下载 网络失败

MySQL - Base64 vs BLOB

如何使用 Java 将 base 64 图像插入 BLOB 列? (甲骨文)