繁体   English   中英

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

[英]How to write binary data as image into azure blob storage c#

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

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

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

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

我已经做了。 以下是我的代码。 这将获取图像字节并保存到 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;
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM