Показывать переменное изображение в шаблонах Go - PullRequest
0 голосов
/ 09 января 2019

Я использую шаблон в веб-приложении Go, который должен показывать изображение в зависимости от того, из какой страны посетитель.

Для изображений я использую FileServer

http.Handle("/images/", http.StripPrefix("/images/", http.FileServer(http.Dir("images"))))

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

<img id='flag' src='images/{{ .Country}}.png'>

Однако по какой-то причине передаваемая мной строка добавляет% 0a, что приводит к неправильному src для img.

<img id='flag' src='images/BE%0A.png'>

Ожидаемый результат должен быть

<img id='flag' src='images/BE.png'>

Следующий код используется для захвата строки страны

resp3, err := http.Get("https://ipinfo.io/country")
if err != nil {
    fmt.Println(err)
}
bytes3, _ := ioutil.ReadAll(resp3.Body)
country := string(bytes3)

Может ли кто-нибудь помочь мне решить эту проблему?

1 Ответ

0 голосов
/ 09 января 2019

строка, которую я передаю, добавляет% 0a, что приводит к тому, что src для img будет неправильно.

<img id='flag' src='images/BE%0A.png'>

Ожидаемый результат должен быть

<img id='flag' src='images/BE.png'>

Обрезать перевод строки (0x0A или "\n"). Например,

package main

import (
    "bytes"
    "fmt"
    "io/ioutil"
    "net/http"
)

func main() {
    resp3, err := http.Get("https://ipinfo.io/country")
    if err != nil {
        fmt.Println(err)
    }
    bytes3, err := ioutil.ReadAll(resp3.Body)
    if err != nil {
        fmt.Println(err)
    }
    fmt.Printf("%q\n", bytes3)
    country := string(bytes.TrimRight(bytes3, "\n"))
    fmt.Printf("%q\n", country)
}

Выход:

"US\n"
"US"
...