Azure Blob映像无法正确显示

时间:2019-03-14 13:43:01

标签: azure azure-storage

我以base 64编码的字符串形式接收图像数据,我需要显示图像的内容而不将其下载到服务器。

在浏览器中访问URL时,我的图像无法正确显示

代码

select t.id, tt.dept [from], t.dept [to], t.doj
from tablename t inner join tablename tt
on tt.id = t.id and
tt.doj = (select max(doj) from tablename where id = t.id and doj < t.doj)

它像这样显示

screenshot

2 个答案:

答案 0 :(得分:0)

FileMode.Create指定操作系统应创建一个新文件。如果文件已经存在,它将被覆盖。有关更多详细信息,请参阅此article

如果您的Blob大小为0B。那么,您将始终找不到文件并打开它。 FileMode指定操作系统应如何打开文件。可以将其删除并使用OpenRead打开现有文件进行读取。您可以参考以下代码:

using (var f = System.IO.File.OpenRead(model.FileToUpload.FileName))
            {
                await blockBlob.UploadFromStreamAsync(f);
            }

有关其他信息,您可以参考此SO线程中提到的建议, Cannot view image upload to azure blob storage

如果您在此问题上需要进一步的帮助,请告诉我。

答案 1 :(得分:0)

我找到了解决方法

我将传入的字符串(基于64位图像的数据)转换为字节数组,并存储在内存流中,并上传到blob。

try
{
    CloudBlobClient blobClient = cloudStorageAccount.CreateCloudBlobClient();
    CloudBlobContainer container = blobClient.GetContainerReference(BlobStorageContainer);
    if (await container.CreateIfNotExistsAsync())
    {
        await container.SetPermissionsAsync(new BlobContainerPermissions { PublicAccess = BlobContainerPublicAccessType.Blob });
    }
    string blobID= Guid.NewGuid().ToString();
    CloudBlockBlob blockBlob = container.GetBlockBlobReference(blobID);
    blockBlob.Properties.ContentType = "image/jpeg";
    byte[] imageBytes = Convert.FromBase64String(imageData);
    MemoryStream memStream = new MemoryStream(imageBytes);
    await blockBlob.UploadFromStreamAsync(memStream);

    return blockBlob.Uri.AbsoluteUri;
}