我是 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 關注
- 137 瀏覽
添加回答
舉報
0/150
提交
取消