2015-12-04 3 views
1

Im пытается прочитать блоб из базы данных и показать его в браузер как base64 изображение (я думаю, что его единственный способ показать его)Изображение блоб в 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 содержит изображение [] byte. Я уверен в этом. Чтобы быть еще более уверены, что 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.........]"> 

Что касается структуры guild.Lo go is [] byte type

+1

Как вы передаете вывод в браузер? Выводимый вами * * - это необработанные байты с '% 20', представляющими пробелы. – elithrar

+0

Результат определенно выглядит как экранированное представление байтового фрагмента, печатаемого в виде строки. –

ответ

0

Представить изображение в качестве базы64 Вам не нужно [[ символов. Вот example:

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA 
AAAFCAYAAACNbyblAAAAHElEQV.... 

И here is how it will look.

Взгляните на данные, которые вы получаете из своей базы данных. Это должно быть byteArray или что-то, что вы можете преобразовать в byteArray. Имея ByteArray, вы можете base64 закодировать его:

sEnc := b64.StdEncoding.EncodeToString(byteArr) 

Посмотрите на мой Go playground, чтобы увидеть, как я получил вышеупомянутую base64 изображение.