GOLANG 如何使用 http.FileServer 从模板目录加载某个 html 文件

func main() {

    mux := http.NewServeMux()

    staticHandler := http.FileServer(http.Dir("./templates"))

    mux.Handle("/", http.StripPrefix("/", staticHandler))

    log.Fatal(http.ListenAndServe(":8080", mux))

}

我想加载一个位于“模板”目录中的 html 文件。如果'模板'中有多个文件,我如何选择某个文件进行加载?


小怪兽爱吃肉
浏览 112回答 1
1回答

qq_笑_17

您可以使用它http.ServeFile()来构建自己的文件服务器。请参见下面的草图。然后您可以在您的自定义fileHandler.ServeHTTP().package mainimport (    "log"    "net/http"    "path"    "path/filepath"    "strings")func main() {    mux := http.NewServeMux()    //staticHandler := http.FileServer(http.Dir("./templates"))    staticHandler := fileServer("./templates")    mux.Handle("/", http.StripPrefix("/", staticHandler))    log.Printf("listening")    log.Fatal(http.ListenAndServe(":8080", mux))}// returns custom file serverfunc fileServer(root string) http.Handler {    return &fileHandler{root}}// custom file servertype fileHandler struct {    root string}func (f *fileHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {    upath := r.URL.Path    if !strings.HasPrefix(upath, "/") {        upath = "/" + upath        r.URL.Path = upath    }    name := filepath.Join(f.root, path.Clean(upath))    log.Printf("fileHandler.ServeHTTP: path=%s", name)    http.ServeFile(w, r, name)}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go