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==">

参考

相关推荐
西猫雷婶19 分钟前
python学opencv|读取图像(四十三)使用cv2.bitwise_and()函数实现图像按位与运算
开发语言·python·opencv
C++小厨神23 分钟前
C#语言的函数实现
开发语言·后端·golang
qwe35263325 分钟前
自定义数据集使用scikit-learn中的包实现线性回归方法对其进行拟合
开发语言·python
S-X-S34 分钟前
OpenAI模块重构
开发语言·重构·openai
计算机-秋大田1 小时前
基于JAVA的微信点餐小程序设计与实现(LW+源码+讲解)
java·开发语言·后端·微信·小程序·课程设计
llp11101 小时前
基于java线程池和EasyExcel实现数据异步导入
java·开发语言
四念处茫茫1 小时前
【C语言系列】深入理解指针(3)
c语言·开发语言·visual studio
Continue20211 小时前
golang 使用双向链表作为container/heap的载体
链表·golang·优先队列·双向链表·heap·container/heap
梦想画家3 小时前
Golang Gin系列-8:单元测试与调试技术
golang·单元测试·gin
漫漫进阶路6 小时前
VS C++ 配置OPENCV环境
开发语言·c++·opencv