如何将二进制数据作为图像写入 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 存储容器?
Flutter AZURE BLOB IMAGE UPLOAD - 如何将使用移动相机拍摄的图像上传到 azure blob 存储