从 Azure Blob C# 下载图像

Posted

技术标签:

【中文标题】从 Azure Blob C# 下载图像【英文标题】:Downloading Image from Azure Blob C# 【发布时间】:2021-12-12 01:48:09 【问题描述】:

我正在尝试使用以下方式从 Azure 存储 blob 下载图像 (.jpg):

 public static async Task DownloadToTemp(string path, string fileName)
    
        string storageAccount_connectionString = "CONNECTION STRING";

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

        CloudBlobContainer container = blobClient.GetContainerReference(CONTAINER);
        CloudBlockBlob cloudBlockBlob = container.GetBlockBlobReference(fileName);

        // provide the file download location below            
        Stream file = File.OpenWrite(path);    
          

        await cloudBlockBlob.DownloadToStreamAsync(file);

        file.Close();

        return;
    

但是当我尝试将图像打开为位图Bitmap image = new Bitmap(path) 时,我收到了错误System.ArgumentException: 'Parameter is not valid.'。我正在使用电话BlobHandler.DownloadToTemp(path, file).GetAwaiter() 来确保文件已下载。

【问题讨论】:

【参考方案1】:

所以问题在于没有完全等待图像被存储: 添加:

await BlobHandler.DownloadToTemp(path, file);

确保文件完全下载(这意味着调用函数必须是异步的)。

【讨论】:

以上是关于从 Azure Blob C# 下载图像的主要内容,如果未能解决你的问题,请参考以下文章

如何使用条件从 Azure 存储下载 blob?

从 Azure 存储中流式传输 blob

Azure Blob 存储 - 显示上传的图像时出错

文件流来自Azure存储的blob

Azure Blob 存储返回 404 和一些文件

在 Azure Blob 存储中加密图像