我试图从数据库中读取一个 blob 并将其作为 base64 图像显示给浏览器(我认为这是显示它的唯一方法)
我的代码如下
rows, err := database.Conn.Query("SELECT a.id, a.name, a.creationdata, b.logo, c.name FROM guilds a, cloaka_guilds b, players c WHERE a.ownerid = c.id AND b.guild_id = a.id ORDER BY creationdata DESC")
if err != nil {
return nil, err
}
guild_list := []*Guild{}
for rows.Next() {
guild := &Guild{}
rows.Scan(&guild.Id, &guild.Name, &guild.Creationdata, &guild.Logo, &guild.Owner)
guild.Logo_str = base64.StdEncoding.EncodeToString(guild.Logo)
guild_list = append(guild_list, guild)
}
return guild_list, nil
b.logo 包含图像 [] 字节。我很确定。为了更加确定 IntelliJ IDEA 显示在数据库行上
88x88 Image 1.68K PNG
在浏览器上用类似的东西渲染
<img src="data:image/jpeg;base64,[[ $element.Logo ]]">
但是自从我明白了之后显然有些地方不对
<img src="data:image/jpeg;base64,[137%2080%2078%2071%2013%2010%2026%20.........]">
至于struct guild.Logo是[]byte类型
最佳答案
要将图像呈现为 base64,您不需要 [[
符号。这是一个 example :
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQV....
查看您从数据库中获取的数据。它应该是 byteArray或者你可以转换成 byteArray 的东西。有了 byteArray,您可以使用 base64 对其进行编码:
sEnc := b64.StdEncoding.EncodeToString(byteArr)
看看我的 Go playground 看看我是如何得到上述 base64 图像的。
关于图像 blob 到 base64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34080015/