Go 服务器 returns arm64 上的损坏图像
Go server returns corrupt image on arm64
我写了一个简单的 HTTP 图片服务器:
go/src/demo/demo.go:
package main
import (
"net/http"
"github.com/gorilla/mux"
)
func main() {
router := mux.NewRouter()
router.HandleFunc("/foobar", func(w http.ResponseWriter, r *http.Request) {
http.ServeFile(w, r, "/home/foobar/test.jpg")
})
http.ListenAndServe(":5000", router)
}
我编译它(PWD=$HOME/go/src/demo):
GOPATH=$PWD/../../ go build -o demo
和运行:
./demo
然后在Chrome我打开URL。图像已损坏 - 每次重新加载都会产生不同的损坏,偶尔会很好。较大的图像 (~200KB) 失败的频率更高,较小的图像 (~20KB) 的失败频率较低。
其他详细信息:
go version
产生 go version go1.9.5 linux/arm64
.
在我的 Macbook 上,这不会导致任何问题——只发生在 arm64 上(看起来 ResponseWriter 没有实现刷新)。我不知所措。有什么想法吗?
看起来这是 go1.9.5 版本的问题。将工具链更新为 go1.10.1,问题消失。
我写了一个简单的 HTTP 图片服务器:
go/src/demo/demo.go:
package main
import (
"net/http"
"github.com/gorilla/mux"
)
func main() {
router := mux.NewRouter()
router.HandleFunc("/foobar", func(w http.ResponseWriter, r *http.Request) {
http.ServeFile(w, r, "/home/foobar/test.jpg")
})
http.ListenAndServe(":5000", router)
}
我编译它(PWD=$HOME/go/src/demo):
GOPATH=$PWD/../../ go build -o demo
和运行:
./demo
然后在Chrome我打开URL。图像已损坏 - 每次重新加载都会产生不同的损坏,偶尔会很好。较大的图像 (~200KB) 失败的频率更高,较小的图像 (~20KB) 的失败频率较低。
其他详细信息:
go version
产生 go version go1.9.5 linux/arm64
.
在我的 Macbook 上,这不会导致任何问题——只发生在 arm64 上(看起来 ResponseWriter 没有实现刷新)。我不知所措。有什么想法吗?
看起来这是 go1.9.5 版本的问题。将工具链更新为 go1.10.1,问题消失。