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

参考

相关推荐
hycccccch7 分钟前
Java&MySQL 学习(基础)
java·开发语言·笔记·学习·mysql
芋芋qwq13 分钟前
Lua、AB包热更新总结
开发语言·lua
爱分享的码瑞哥31 分钟前
Rust 基础教程
开发语言·后端·rust
__AtYou__31 分钟前
Golang | Leetcode Golang题解之第211题添加与搜索单词-数据结构设计
leetcode·golang·题解
那个那个鱼35 分钟前
C#面:现有一个整数number,请写一个方法判断这个整数是否是2的N次方
开发语言·算法·c#·.net
盏茶作酒39 分钟前
解决expand-change第一次展开无数据显示与实现
开发语言·前端·javascript
V言微语42 分钟前
2.3 主程序和外部IO交互 (文件映射方式)----IO Server实现
开发语言
yaoxin52112342 分钟前
第四十五章 在 SOAP 消息中使用数据集 - 以 XML 形式查看数据集和架构
xml·java·开发语言
临界点oc1 小时前
Java面试八股文
java·开发语言·面试
十五年专注C++开发1 小时前
深入理解C++中的锁
开发语言·c++·高质量编程