问题:为什么我的 svg 图片在 url 正确时找不到?

我正在使用https://identicon-api.herokuapp.com/在我的页面中嵌入标识。您可以选择 SVG 或 PNG。 PNG 工作得很好,但出于性能原因,我想使用 SVG。但是当我使用 SVG 时,找不到图像,并显示了替代文本。

不过,该 URL 是有效的,当我在新选项卡中打开图像时,它会正确呈现。

<img
  v-if="iconsenabled"
  style="max-width:1.75em"
  :src="'https://identicon-api.herokuapp.com/'+e.author+'/2000?format=svg'"
  :alt="e.author+`'s identcon.`"
  :title="e.author+`'s identicon. Toggle 'show icons' to see the name instead`"
/>

(顺便说一句,是的,我正在使用 Vue,但这不会影响任何事情)

解答

SVG 具有服务器设置的不正确的 MIME 类型<img>要求MIME类型为image/svg+xml,但是https://identicon-api.herokuapp.com/目前设置为text/html,导致加载错误:

作为参考,这里有一个示例 SVG,它具有正确的 MIME 类型,可以在<img>中正确呈现:

<img src="https://upload.wikimedia.org/wikipedia/commons/4/42/Sample-image.svg" width="200">

作为一种解决方法,您可以获取 SVG,将其转换为 base64 字符串,并将其用作数据 URL:

<img :src="'data:image/svg+xml;base64,' + __SVG_BASE64__">

例子:

new Vue({
  el: '#app',
  data: () => ({
    myImgUrl: ''
  }),
  mounted() {
    fetch('https://identicon-api.herokuapp.com/tony19/2000?format=svg')
      .then(resp => resp.text())
      .then(text => this.myImgUrl = 'data:image/svg+xml;base64,' + btoa(text))
  }
})
<script src="https://unpkg.com/vue@2.6.12"></script>

<div id="app">
  <img :src="myImgUrl" width="200" height="200">
</div>
# xhtml # vue.js
Logo
Vue

前往低代码交流专区

更多推荐

  • · 播客 | Fathym 关于 Vue 的观点
  • · 带有浮动 Vue 和 Tailwind 的 Vue 下拉菜单
  • · 赵文卓100001 the zh I晦platform

播客 | Fathym 关于 Vue 的观点

在科罗拉多州,我们有许多美景。从山顶到山谷和中间的山丘。 谈到 Vue.js,Fathym 是 JavaScript 框架的粉丝。 我们的工程总监 Jeremy Tomlinson 和品牌传播代表 Rich Kurtzman 很高兴成为 8 月中旬 Vue 播客观点的一部分。 在采访中,主持人史蒂夫爱德华兹向我们的团队询问了很多事情,包括: Fathym 是谁以及我们做什么 使用 Azure 和/

带有浮动 Vue 和 Tailwind 的 Vue 下拉菜单

可用于在 Vue 应用程序中创建工具提示、弹出框和菜单的最流行的库之一是floating-vue。虽然floating-vue提供了一个Dropdown组件,但它的样式和添加其他功能(例如键盘导航)由用户决定。 我们将创建什么 我们将使用floating-vue的Dropdown组件作为基础,然后在顶部添加键盘功能。然后,我们将使用该组件使用 Tailwind 创建一个下拉菜单。 最终结果将类似于

赵文卓100001 the zh I晦platform

是学校的平台,可以发布数据等,更快更安全。 这里不是旗帜,因为我已经为这个平台制定了计划。不过,如你所知,我是初三的学生,马上就要参加中考了。所以我几乎没有空闲时间来开发这个。 作为我校学生会的主席,我在管理等方面有一些经验。我可以把这些exp放到这个平台上,这样平台可以帮助我们更多。 这个平台最大的特点就是_简单而强大_。 “简单”的意思是它可以使用最少的内存、时间来完成最多的任务。有时,我们可