go - 从 http 中的 zip 文件提供内容

我正在考虑github.com/remyoudompheng/go-misc/zipfs从 http 中的 zip 文件提供内容。


这个最小的例子有效,我可以得到一个包含在files/archives.zip 中的 {FILE} : http://localhost:8080/zip/{FILE}


package main


import (

    "archive/zip"

    "github.com/remyoudompheng/go-misc/zipfs"

    "log"

    "net/http"

)


func main() {


    z, err := zip.OpenReader("files/archive.zip")

    if err != nil {

        log.Fatal(err)

    }

    defer z.Close()


    http.Handle("/zip/", http.StripPrefix("/zip/", http.FileServer(zipfs.NewZipFS(&z.Reader))))

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

}

现在,假设我想要一些像 我正在尝试注册一个函数但不起作用的东西http://localhost:8080/zip/{ZIPFILE}/{FILE}


package main


import (

    "archive/zip"

    "github.com/remyoudompheng/go-misc/zipfs"

    "html"

    "log"

    "net/http"

    "strings"

)


func servezip(res http.ResponseWriter, req *http.Request) {

    zippath := "files/" + strings.Split(html.EscapeString(req.URL.Path), "/")[2] + ".zip"


    z, err := zip.OpenReader(zippath)

    if err != nil {

        http.Error(res, err.Error(), 404)

        return

    }

    defer z.Close()

    http.StripPrefix("/zip/", http.FileServer(zipfs.NewZipFS(&z.Reader)))

}


func main() {

    http.HandleFunc("/zip/", servezip)

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

}

我错过了什么?一个handlefunc 可以返回一个http.fileserver 吗?


慕虎7371278
浏览 239回答 0
0回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go