我有这个非常简单的代码来提供一些文件:
wd, _ := os.Getwd()
fs := http.FileServer(http.Dir(filepath.Join(wd,"../", "static")))
r.Handle("/static", fs)
但这会引发 404 错误。
这个目录是相对于我的 cmd/main.go 的,我也尝试过它相对于当前包,我也尝试过 os.Getwd(),但它不起作用。请注意,我将“不工作”称为“不给出任何错误并返回 404 代码”。
我希望,当访问 http://localhost:port/static/afile.png 时,服务器将返回这个文件,并带有预期的 mime 类型。
这是我的项目结构:
- cmd
main.go (main entry)
- static
afile.png
- internal
- routes
static.go (this is where this code is being executed)
go.mod
go.sum
请注意,我也尝试使用 filepath.Join()
我还尝试了其他替代方案,但它们也给出了 404 错误。
编辑:这是 static.go 的 os.Getwd() 输出:
/mnt/Files/Projects/backend/cmd(如预期的那样)
这是 fmt.Println(filepath.Join(wd, "../", "static")) 结果 /mnt/Files/Projects/backend/static
最小复制库: https ://github.com/dragonDScript/repro
DIEA
相关分类