如何将二进制数据作为图像写入 azure blob 存储 c#

Posted

技术标签:

【中文标题】如何将二进制数据作为图像写入 azure blob 存储 c#【英文标题】:How to write binary data as image into azure blob storage c# 【发布时间】:2020-10-23 20:37:03 【问题描述】:

首先,我是天蓝色开发的新手,所以我的问题会模棱两可。我需要更好的建议。 我有接收二进制数据(图像)的 web api C#。我想将它写入 azure blob 存储。在我的情况下,我需要检查是否存在 blob 存储然后写入图像,否则创建目录并写入图像。

此目录是公共读取访问权限,因此我可以在任何公共应用程序中反映图像。

以下方法存储图片并返回图片公共路径

public class BlobStorageService : IBlobStorageService
    
        public async Task<string> SaveSingleImage(byte[] image)
        
            throw new NotImplementedException();
        
    

【问题讨论】:

抱歉,请问具体是什么问题? @GuruPasupathy 他们希望我们为他们编写代码? ;) 不完全是代码,而是解决这个问题的方法 【参考方案1】:

我已经做到了。以下是我的代码。这将获取图像字节并保存到 blob 存储中并返回该图像的公共 URL

public async Task<string> GoAppSaveSingleImage(ProofImageViewModel proofImage)
        

            CloudStorageAccount storageAccount = CloudStorageAccount.Parse(GlobalConfig.Instance.AzureBlobStorageForGoAppImages);
            CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
            CloudBlobContainer container = blobClient.GetContainerReference(GlobalConfig.Instance.AzureBlobGoAppImagesContainerName);
            CloudBlockBlob blockBlob = container.GetBlockBlobReference($"proofImage.CountryCode/DateTime.Now.Year/DateTime.Now.Month/proofImage.ProofImage");
            blockBlob.Properties.ContentType = "image/png";
            if (GlobalConfig.Instance.AzureBlobGoAppImagesIsStorageTier)
            
                blockBlob.SetStandardBlobTierAsync((StandardBlobTier)GlobalConfig.Instance.AzureBlobGoAppImagesStorageTier).GetAwaiter().GetResult();
            
            using (var stream = new MemoryStream(proofImage.ProofImage, writable: false))
            
                await blockBlob.UploadFromStreamAsync(stream);
            
            string publicUrl = blockBlob.Uri.AbsoluteUri;
            return publicUrl;
        

【讨论】:

以上是关于如何将二进制数据作为图像写入 azure blob 存储 c#的主要内容,如果未能解决你的问题,请参考以下文章

如何将图像转换为 Base64 字符串,并转换回图像,保存到 azure blob

从 Azure Databricks 将数据写入 Azure Blob 存储

为啥 Azure 数据工厂使用 AppendFile 而不是 PutBlob 将文件写入 Blob 存储容器?

如何使用 azure 数据工厂下载 blob

Flutter AZURE BLOB IMAGE UPLOAD - 如何将使用移动相机拍摄的图像上传到 azure blob 存储

如何使用数据工厂将 IoT 中心存储的 blob 复制到 Azure SQL