在浏览器中显示Azure Blob图像文件,不要强制下载

时间:2020-08-15 20:20:07

标签: azure azure-storage-blobs

此问题已在不久前问到。我希望今天的答案有所不同。

我正在使用Azure blob存储为网站保存图像(jpg)。我直接链接到<img>标记中的文件,并且效果很好(已启用匿名访问)。问题在于,如果用户单击图像(直接链接到文件),他们将被迫下载图像,而无法在浏览器中查看图像。

有没有一种方法可以设置Blob存储的标头,以允许直接在浏览器中查看它,而不强制下载。

更新1:

基于此How can I view an image from Azure Blob Storage, rather than download it?和此https://social.msdn.microsoft.com/Forums/windowsapps/en-US/b8759195-f490-420b-a587-2bb614366ad2/embedding-images-from-blob-storage-in-ssrs-report-does-not-work

我发现我没有设置内容类型,这导致了问题。我需要将其设置为"image/jpeg"。我不太确定该怎么做。这是我用来存储图像的代码。

using Microsoft.Azure.Storage.Blob

/// <summary>
/// Save a file to azure blob storage.
/// </summary>
/// <param name="name">Name of file</param>
/// <param name="file">filestream</param>
/// <param name="ct">Cancellationtoken</param>
public async Task<bool> SaveFile(Stream fileStream, string fileName, CancellationToken ct)
{
   CloudBlockBlob cloudBlockBlob = _blobContainer.GetBlockBlobReference(fileName);

   fileStream.Position = 0;
   await cloudBlockBlob.UploadFromStreamAsync(fileStream, ct);

   return true;
}

我在此上找不到任何类型的“ .Content”或“ Type”属性。将继续挖掘。

更新2:可能已找到解决方案:

cloudBlockBlob.Properties.ContentType = "image/jpg";

测试

更新3:做到了。使用此设置为图像和pdf设置适当的内容类型,现在可以在浏览器中查看它们。

if (fileName.EndsWith(".jpg"))
{
    cloudBlockBlob.Properties.ContentType = "image/jpg";
}
else if (fileName.EndsWith(".pdf"))
{
    cloudBlockBlob.Properties.ContentType = "application/pdf";
}

1 个答案:

答案 0 :(得分:3)

有关详细信息,请参阅问题。但是可以通过以下方式设置内容类型:

cloudBlockBlob.Properties.ContentType = "image/jpg";
相关问题