go “静态目录服务” http.FileServer
参照手册http://godoc.golangtc.com/pkg/net/http/#FileServer
里面给了Example:
http.Handle("/", http.FileServer(http.Dir("/tmp")))这个是对目录提供静态映射服务,如果是单个文件
http.HandleFunc("/static/", func(w http.ResponseWriter, r *http.Request) {http.ServeFile(w, r, r.URL.Path[1:])}) })完整例子:
import ("fmt""log""net/http""os""path/filepath" )var staticMap map[string]string = map[string]string{"/web/": "../public/web","/bower_components/": "../public/bower_components", }func InitStaticServer() {rootDir, err := filepath.Abs(filepath.Dir(os.Args[0]))if err != nil {log.Fatal(err)}for webPath, sysPath := range staticMap {sysPath, err = filepath.Abs(fmt.Sprintf("%s/%s/", rootDir, sysPath))if err != nil {log.Fatal(err)}log.Print("Serving ", webPath, " -> ", sysPath)http.Handle(webPath, http.StripPrefix(webPath, http.FileServer(http.Dir(sysPath))))} }package main
import (
"fmt"
"net/http"
)
func main() {
http.HandleFunc("/", homeHandler)
http.HandleFunc("/static/", func(w http.ResponseWriter, r *http.Request) {
http.ServeFile(w, r, r.URL.Path[1:])
})
panic(http.ListenAndServe(":17901", nil))
}
func homeHandler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "<html><head></head><body><h1>Welcome Home!</h1><a href=\"/static/img/test.gif\">Show Image!</a></body></html>")
}
转载于:https://my.oschina.net/ywzjackal/blog/349196
总结
以上是生活随笔为你收集整理的go “静态目录服务” http.FileServer的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 绍耕反失败学课程(01)— —人生只做一
- 下一篇: IFI Claims:2018年中国企业