亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

GOLANG 如何使用 http.FileServer 從模板目錄加載某個 html 文件

GOLANG 如何使用 http.FileServer 從模板目錄加載某個 html 文件

Go
小怪獸愛吃肉 2022-12-05 16:47:58
func main() {    mux := http.NewServeMux()    staticHandler := http.FileServer(http.Dir("./templates"))    mux.Handle("/", http.StripPrefix("/", staticHandler))    log.Fatal(http.ListenAndServe(":8080", mux))}我想加載一個位于“模板”目錄中的 html 文件。如果'模板'中有多個文件,我如何選擇某個文件進行加載?
查看完整描述

1 回答

?
qq_笑_17

TA貢獻1818條經驗 獲得超7個贊

您可以使用它http.ServeFile()來構建自己的文件服務器。


請參見下面的草圖。


然后您可以在您的自定義fileHandler.ServeHTTP().


package main


import (

    "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 server

func fileServer(root string) http.Handler {

    return &fileHandler{root}

}


// custom file server

type 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)

}


查看完整回答
反對 回復 2022-12-05
  • 1 回答
  • 0 關注
  • 133 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號