在Go(golang)中使用webserver显示gif图像

时间:2013-09-12 13:05:25

标签: web-services web go

我尝试使用这个简单的Go程序输出1x1透明GIF图像(在base64中预先生成),尽管我似乎无法使其正常工作。有没有人知道如何使用预先生成的base64字符串或磁盘中的文件来执行此操作?

我很感激帮助。


package main

import (
       "net/http"
       "io"
       "encoding/base64"
)

const base64GifPixel = "R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs="

func respHandler(res http.ResponseWriter, req *http.Request) {
    res.Header().Set("Content-Type","image/gif")
    output,_ := base64.StdEncoding.DecodeString(base64GifPixel)
    io.WriteString(res,string(output))
}


func main() {
    http.HandleFunc("/", respHandler)
    http.ListenAndServe(":8086", nil)
}

2 个答案:

答案 0 :(得分:8)

似乎在这里工作正常:

$ wget -q -O file.gif http://localhost:8086
$ file file.gif
file.gif: GIF image data, version 89a, 1 x 1

你是如何确认它不起作用的?如果你使用网络浏览器访问它,我想它会显示一个带有透明像素的空白页面,这有点难以发现。 : - )

作为旁注,强烈建议检查错误,即使在示例代码中(示例代码多次解释)。

答案 1 :(得分:1)

也适合我。顺便说一句,如果你这样做是作为信标/跟踪像素的一部分,你可以简单地返回204无内容(它比gif小35个字节,它可以用于完全相同的目的): / p>

func EventTracker(w http.ResponseWriter, r *http.Request) {
    if r.Method != "GET" {
        http.NotFound(w, r)
        return
    }
    //insert tracking logic here
    w.WriteHeader(http.StatusNoContent)
}