我尝试使用这个简单的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)
}
答案 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)
}