为什么从 blob 存储链接时不显示 SVG 图像?

Why are SVG images not displaying when linked from blob storage?

我有一个 blazor WASM 站点,我正在尝试直接从 blob 存储中显示 SVG 图像。我试过使用

<img src="https://rmssdstorage.blob.core.windows.net/mixandswirlimages/cbf53722-5889-4100-8c2e-30b8500e1a3d.svg" height="300"/>

但这会导致图像损坏 link。您可以看到该图像在服务器上:您可以通过单击 link 下载它:https://rmssdstorage.blob.core.windows.net/mixandswirlimages/cbf53722-5889-4100-8c2e-30b8500e1a3d.svg

我也试过使用

<object type="image/svg+xml" src="https://rmssdstorage.blob.core.windows.net/mixandswirlimages/cbf53722-5889-4100-8c2e-30b8500e1a3d.svg"></object>

但这似乎会导致图像下载到您的设备(但仍不会导致它显示在页面上)。

如果我 link 从另一个来源获取图像,它会显示:

<img src="https://upload.wikimedia.org/wikipedia/commons/8/8c/Aperiodisk-v%C3%A4xelstorhet.svg" height="300" />

为什么我可以显示来自其他站点的图像,但无法显示来自我的 Azure CDN Blob 存储的图像,即使这些图像可以公开访问?

我怀疑您可能需要设置 blob 的内容类型。默认情况下它是 application/octet-stream。参见

请按照以下步骤操作:

转到 Azure 门户 -> 您的存储帐户 -> 在左侧边栏中,单击 Storage Explorer (preview) -> 然后找到 .svg 图像 -> 右键单击​​它并 select Properties -> 在Blob Properties页面,勾选ContentType:如果不是image/svg+xml,请设置为image/svg+xml,然后点击Save按钮。

以下是步骤截图:

顺便说一下,您也可以使用 Azure Storage Explorer 来做到这一点。