azure - 在浏览器中显示 Azure blob 图像文件并且不要强制下载
问题描述
这个问题前段时间就有人问过了。我希望今天的答案有所不同。
- 3 年前 - Azure 存储文件强制下载到浏览器
我正在使用 Azure blob 存储来保存网站的图像 (jpg)。我直接链接到我的<img>
标签中的文件,效果很好(启用了匿名访问)。问题是,如果用户单击图像(直接链接到文件),他们将被迫下载它并且无法在浏览器中查看它。
有没有办法设置 blob 存储的标头以允许直接在浏览器中查看它而不强制下载。
更新1:
基于此如何查看 Azure Blob 存储中的图像,而不是下载它?和这个https://social.msdn.microsoft.com/Forums/windowsapps/en-US/b8759195-f490-420b-a587-2bb614366ad2/embedding-images-from-blob-storage-in-ssrs-report-does-不行
我发现我没有设置导致问题的内容类型。我需要将其设置为"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";
}
解决方案
有关详细信息,请参阅问题。但是可以通过以下方式设置内容类型:
cloudBlockBlob.Properties.ContentType = "image/jpg";
推荐阅读
- java - 如何格式化json对象的数量并在TextView Android中设置它
- laravel - Laravel 部署到生产环境并在环境文件问题中混合变量
- python-3.x - 无法在 Linux 操作系统上使用 python selenium 和 chromedriver 下载文件
- gpu - TFLite 模型在 GPU 上溢出,在 CPU 上正常。内部有什么区别?
- django - 希望在 django 中创建一个视频流应用程序
- c# - 检查日期是否介于从今天开始在特定时区计算的特定日期之间
- python - 模板匹配轮换(半回文)?
- swift - 删除 indexpath-> indexpath - 1 的第一个元素
- python - 列表循环迭代
- c++ - C++ 中的除法舍入