为了账号安全,请及时绑定邮箱和手机立即绑定

Golang mux http.FileServer 不返回图像

Golang mux http.FileServer 不返回图像

Go
30秒到达战场 2023-07-31 15:46:50
我是 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 中的输出 -任何帮助,将不胜感激。
查看完整描述

1 回答

?
qq_笑_17

TA贡献1818条经验 获得超7个赞

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)


查看完整回答
反对 回复 2023-07-31
  • 1 回答
  • 0 关注
  • 110 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信