我试图从数据库中读取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包含一个image []字节。我很确定。更确定IntelliJ IDEA在数据库行上显示
88x88图片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是[]字节类型
答案 0 :(得分:1)
要将图像显示为base64,您不需要[[
个符号。这是一个example:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQV....
查看从数据库中获取的数据。它应该是byteArray或者你可以转换为byteArray的东西。有了byteArray,你可以用以下代码对其进行base64编码:
sEnc := b64.StdEncoding.EncodeToString(byteArr)
看一下我的 Go playground ,看看我是如何得到上面提到的base64图像的。