无法提供静态目录

时间:2019-04-09 21:34:40

标签: http go filesystems

我正在尝试在应用程序的根目录中提供一个名为assets的文件夹。我希望可以通过URL /details/访问其中的所有文件和子文件夹。

fs := http.FileServer(http.Dir("assets"))
http.Handle("/details/", http.StripPrefix("/details/", fs))

我仍然得到所有内容的404。我使用的是StripPrefix吗?

为清楚起见,假设assets包含test.json。我希望可以通过URL /details/test.json进行访问。

1 个答案:

答案 0 :(得分:1)

根据以上注释,仔细检查您的路径,权限,用户上下文等。

如果仍然遇到问题,请从以下基本设置开始:

package main

import (
        "log"
        "net/http"
)

func main() {
        fs := http.FileServer(http.Dir("/tmp/assets"))
        http.Handle("/details/", http.StripPrefix("/details/", fs))
        log.Fatal(
                http.ListenAndServe(":8080", nil),
        )   
}

并测试卷曲度。

$ find /tmp/assets

/tmp/assets
/tmp/assets/test.json

$ go run ./main.go

$ curl localhost:8080/details/

<pre>
<a href="test.json">test.json</a>
</pre>