douxian1939 2014-08-20 05:06
浏览 50
已采纳

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

Hi I am trying to create a server in Go Lang which serves files and HTTP Requests at the same time.

I want /upload path to accept post requests and /files path to serve static files in the fpath

I tried with the following code but i get a 404 error

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条回答 默认 最新

  • duanchangnie7996 2014-08-20 09:16
    关注

    You need trailing slashes on your handle path if it's a directory. See http://golang.org/pkg/net/http/#ServeMux for more info.

    Patterns name fixed, rooted paths, like "/favicon.ico", or rooted subtrees, like "/images/" (note the trailing slash).

    Try

    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))
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 数学建模,尽量用matlab回答,论文格式
  • ¥15 昨天挂载了一下u盘,然后拔了
  • ¥30 win from 窗口最大最小化,控件放大缩小,闪烁问题
  • ¥20 易康econgnition精度验证
  • ¥15 msix packaging tool打包问题
  • ¥28 微信小程序开发页面布局没问题,真机调试的时候页面布局就乱了
  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能