多个静态文件目录

在Go中,我们可以通过将静态文件的目录定义为静态目录来处理静态文件,如下所示:


        fs := http.FileServer(http.Dir("./static/")) 

        http.Handle("/files/", fs)

其中静态文件文件夹应位于二进制文件旁边。static


另一种方法是使用新的作为://go embed


        //go:embed static

        var staticFiles embed.FS


        // http.FS can be used to create a http Filesystem

        var staticFS = http.FS(staticFiles)

        fs := http.FileServer(staticFS) // embeded static files

        // Serve static files

        http.Handle("/static/", fs)

但是,如果我想将我的大多数静态文件嵌入到二进制文件中,而有些则不是,可以与二进制文件一起使用,我试图混合上面定义的两种方法,但不起作用,只有那些运行平稳,下面的代码失败了,有什么想法吗?embedded


        //go:embed static

        var staticFiles embed.FS


        // http.FS can be used to create a http Filesystem

        var staticFS = http.FS(staticFiles)

        fs := http.FileServer(staticFS) // embeded static files

        // Serve static files

        http.Handle("/static/", fs)


        www := http.FileServer(http.Dir("./files/")) // side static files, to be beside binary

        // Serve static files

        http.Handle("/files/", www)


阿波罗的战车
浏览 104回答 1
1回答

侃侃无极

我找到了它,丢失了,下面与我完美配合,并有多个静态文件夹:http.StripPrefixpackage mainimport (    "embed"    "encoding/json"    "fmt"    "log"    "net/http")//go:embed staticvar staticFiles embed.FSfunc main() {    go func() {        http.HandleFunc("/favicon.ico", func(rw http.ResponseWriter, r *http.Request) {})        // http.FS can be used to create a http Filesystem        var staticFS = http.FS(staticFiles)        fs := http.FileServer(staticFS) // embeded static files        // Serve static files, to be embedded in the binary        http.Handle("/static/", fs)        // Serve public files, to be beside binary        http.Handle("/public/", http.StripPrefix("/public/", http.FileServer(http.Dir("./files"))))        http.HandleFunc("/getSkills", getSkills)        log.Println("Listening on :3000...")        err := http.ListenAndServe(":3000", nil)        if err != nil {            log.Fatal(err)        }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go