我是 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)
- 1 回答
- 0 关注
- 102 浏览
添加回答
举报
0/150
提交
取消