Golang mux http.FileServer 不返回图像

我是 Go 新手,正在尝试设置 Go 服务器。我的目的是在点击 url 时返回图像。


这就是我所做的


myRouter := mux.NewRouter()

myRouter.HandleFunc("/poster_path/{id}",posterfunc)

这是我的海报功能


func posterfunc(w http.ResponseWriter, r *http.Request){

    w.Header().Set("Content-Type", "image/jpeg")

    vars := mux.Vars(r)

    key := vars["id"]

    var url = "/home/rakshithjk/Desktop/poster/"+key+".jpg"

    http.FileServer(http.Dir(url))

}

这是 Postman 中的输出 -

https://img4.mukewang.com/64c7670a0001a93310060562.jpg

任何帮助,将不胜感激。



30秒到达战场
浏览 111回答 1
1回答

qq_笑_17

http.FileServer()不应该在这样的函数中调用。它返回一个Handler function(类似于您创建的函数posterfunc)。它应该用作路由配置中的处理程序函数,如下所示:myRouter.HandleFunc("/poster_path/",http.FileServer(http.Dir("./your_dir")))如果您想在处理程序中使用它,您应该使用http.ServeFile. 它将使用指定文件或目录的内容响应请求。func posterfunc(w http.ResponseWriter, r *http.Request){    w.Header().Set("Content-Type", "image/jpeg")    vars := mux.Vars(r)    key := vars["id"]    var url = "/home/rakshithjk/Desktop/poster/"+key+".jpg"    http.ServeFile(w, r, url)}更新2:新代码片段中的问题是您在提供文件之前打印到界面。删除这一行:fmt.Fprintf(w, "Hello, %q\n", url)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go