在Go Lang中使用相同的服务器提供HTTP请求和文件

时间:2014-08-20 05:06:46

标签: http go

您好我正在尝试在Go Lang中创建一个服务器,同时提供文件和HTTP请求。

我希望/upload路径接受发布请求和 在/files

中提供静态文件的fpath路径

我尝试使用以下代码,但是我收到了404错误

func main() {
    fpath, _ := filepath.Abs(filepath.Dir(os.Args[0]))
    fpath+="/public"
    fmt.Println(fpath)
    http.HandleFunc("/upload",uploadFunc)
    http.HandleFunc("/files",http.FileServer(http.Dir(fpath)))
    panic(http.ListenAndServe(":8080", nil))
}

1 个答案:

答案 0 :(得分:3)

如果它是目录,则需要在句柄路径上使用尾部斜杠。有关详细信息,请参阅http://golang.org/pkg/net/http/#ServeMux

  

模式名称是固定的,有根的路径,例如" /favicon.ico"或根管子树,例如" / images /" (注意斜杠)。

尝试

func main() {
    fpath, _ := filepath.Abs(filepath.Dir(os.Args[0]))
    fpath+="/public"
    fmt.Println(fpath)
    http.HandleFunc("/upload",uploadFunc)
    http.Handle("/files/", http.StripPrefix("/files/", http.FileServer(http.Dir(fpath))))
    panic(http.ListenAndServe(":8080", nil))
}