Golang:gin模板渲染base64图片出现#ZgotmplZ

目录

问题描述

gin模板渲染base64图片出现#ZgotmplZ

场景复现

项目目录

bash 复制代码
main.go
templates/
    index.html

gin模板渲染base64图片

go 复制代码
package main

import (
    "net/http"

    "github.com/gin-gonic/gin"
)

// base64图片
var imageUrl = "data:image/gif;base64,R0lGODlhMwAxAIAAAAAAAP///yH5BAAAAAAALAAAAAAzADEAAAK8jI+pBr0PowytzotTtbm/DTqQ6C3hGXElcraA9jIr66ozVpM3nseUvYP1UEHF0FUUHkNJxhLZfEJNvol06tzwrgdLbXsFZYmSMPnHLB+zNJFbq15+SOf50+6rG7lKOjwV1ibGdhHYRVYVJ9Wnk2HWtLdIWMSH9lfyODZoZTb4xdnpxQSEF9oyOWIqp6gaI9pI1Qo7BijbFZkoaAtEeiiLeKn72xM7vMZofJy8zJys2UxsCT3kO229LH1tXAAAOw=="

func main() {
    app := gin.Default()

    // 加载模板文件
    app.LoadHTMLGlob("templates/*")

    // 生成验证码
    app.GET("/", func(ctx *gin.Context) {
        ctx.HTML(http.StatusOK, "index.html", gin.H{
            "imageUrl": imageUrl,
        })
    })

    // 监听并在 http://127.0.0.1:8080 上启动服务
    app.Run()
}

模板内容 index.html

html 复制代码
<img src="{{.imageUrl}}">

图片没有正常显示

查看页面渲染结果,发现base64字符串没有显示完整

html 复制代码
<img src="#ZgotmplZ">

解决办法

修改字符串,指定其类型

bash 复制代码
"imageUrl": template.URL(imageUrl)

完整代码

go 复制代码
package main

import (
    "html/template"
    "net/http"

    "github.com/gin-gonic/gin"
)

var imageUrl = "data:image/gif;base64,R0lGODlhMwAxAIAAAAAAAP///yH5BAAAAAAALAAAAAAzADEAAAK8jI+pBr0PowytzotTtbm/DTqQ6C3hGXElcraA9jIr66ozVpM3nseUvYP1UEHF0FUUHkNJxhLZfEJNvol06tzwrgdLbXsFZYmSMPnHLB+zNJFbq15+SOf50+6rG7lKOjwV1ibGdhHYRVYVJ9Wnk2HWtLdIWMSH9lfyODZoZTb4xdnpxQSEF9oyOWIqp6gaI9pI1Qo7BijbFZkoaAtEeiiLeKn72xM7vMZofJy8zJys2UxsCT3kO229LH1tXAAAOw=="

func main() {
    app := gin.Default()

    // 加载模板文件
    app.LoadHTMLGlob("templates/*")

    // 生成验证码
    app.GET("/", func(ctx *gin.Context) {
        ctx.HTML(http.StatusOK, "index.html", gin.H{
            "imageUrl": template.URL(imageUrl),
        })
    })

    // 监听并在 http://127.0.0.1:8080 上启动服务
    app.Run()
}

渲染结果

再次查看其渲染结果,发现base64字符串显示完整了

html 复制代码
<img src="data:image/gif;base64,R0lGODlhMwAxAIAAAAAAAP///yH5BAAAAAAALAAAAAAzADEAAAK8jI&#43;pBr0PowytzotTtbm/DTqQ6C3hGXElcraA9jIr66ozVpM3nseUvYP1UEHF0FUUHkNJxhLZfEJNvol06tzwrgdLbXsFZYmSMPnHLB&#43;zNJFbq15&#43;SOf50&#43;6rG7lKOjwV1ibGdhHYRVYVJ9Wnk2HWtLdIWMSH9lfyODZoZTb4xdnpxQSEF9oyOWIqp6gaI9pI1Qo7BijbFZkoaAtEeiiLeKn72xM7vMZofJy8zJys2UxsCT3kO229LH1tXAAAOw==">

参考

相关推荐
执风挽^40 分钟前
Python基础编程题2
开发语言·python·算法·visual studio code
Z9fish1 小时前
sse哈工大C语言编程练习20
c语言·开发语言·算法
萧鼎1 小时前
Python 包管理的“超音速”革命:全面上手 uv 工具链
开发语言·python·uv
源代码•宸2 小时前
大厂技术岗面试之谈薪资
经验分享·后端·面试·职场和发展·golang·大厂·职级水平的薪资
Anastasiozzzz2 小时前
Java Lambda 揭秘:从匿名内部类到底层原理的深度解析
java·开发语言
刘琦沛在进步2 小时前
【C / C++】引用和函数重载的介绍
c语言·开发语言·c++
机器视觉的发动机2 小时前
AI算力中心的能耗挑战与未来破局之路
开发语言·人工智能·自动化·视觉检测·机器视觉
HyperAI超神经2 小时前
在线教程|DeepSeek-OCR 2公式/表格解析同步改善,以低视觉token成本实现近4%的性能跃迁
开发语言·人工智能·深度学习·神经网络·机器学习·ocr·创业创新
R_.L2 小时前
【QT】常用控件(按钮类控件、显示类控件、输入类控件、多元素控件、容器类控件、布局管理器)
开发语言·qt
Zach_yuan2 小时前
自定义协议:实现网络计算器
linux·服务器·开发语言·网络