如何将变量传递到 html 模板中并将其用作 img 源

我正在处理 Web 服务器。我的目标是使用 base64 字符串加载图像,并在网站上显示该图像。base64 字符串应根据我用于加载模板的变量而有所不同。


这是我的 Go 渲染代码:


varmap := map[string]interface{}{

    "username": discordTag,

    "b64":      "data:image/png;base64,looongstring",

}

fmt.Println("logged in!")

templates.ExecuteTemplate(w, "index.html", varmap)


这是我的索引.html


<!DOCTYPE html>

<html>

  <head>

    <meta charset="UTF-8" />

    <meta http-equiv="X-UA-Compatible" content="IE=edge" />

    <meta name="viewport" content="width=device-width, initial-scale=1.0" />

    <title>Document</title>

  </head>

  <body>

    <div>

      <h1>Welcome back, {{ .username }} {{ .b64 }}</h1>

      <img src="{{ .b64 }}"/>

    </div>

  </body>

</html>

用户名的显示工作正常,将 base64 字符串显示为文本也很好。用户名显示工作


查看浏览器呈现的 HTML,img src 显示为“#ZgotmplZ”


慕斯709654
浏览 140回答 1
1回答

阿晨1998

假设您使用的是 html/template 包,该包会转义字符串以防止代码注入。您可以将 base64 dataurl 包装进去,告诉模板引擎如何处理您的字符串。template.URLvarmap := map[string]interface{}{&nbsp; &nbsp; "username": discordTag,&nbsp; &nbsp; "b64":&nbsp; &nbsp; &nbsp; template.URL("data:image/png;base64,looongstring"),}我应该注意,除非图像非常小,否则最好静态地提供它们,而不是将嵌入到html中。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go