go - 如何使用 Go Chi 提供静态文件?

标签 go go-chi

我正在学习 Go,但在使用我的服务器提供静态文件时遇到问题。我总是得到 404。

该请求针对http://localhost:3001/static/breakfast.jpg

路由器+文件服务r

mux := chi.NewRouter()    
mux.Get("/", handlers.Repo.Home)
fileServer := http.FileServer(http.Dir("./static/"))
mux.Handle("/static/*", http.StripPrefix("/static", fileServer))

静态文件路径

root/static/

我的模板 homepage.tmpl

{{template "base" .}}

{{define "content"}}
<div class="container">
    <div class="row">
        <div class="col">
            <h1>Hi from home page</h1>
            <img src="/static/breakfast.jpg" width="1920" height="1080" alt="house" />
        </div>
    </div>
</div>
{{ end }}

我做错了什么?

最佳答案

这个source告诉 http.Dir 从运行 main.go 文件的目录相对地提供文件。如果您传递绝对路径,那么它与此无关,并且只需阅读代码就更容易理解:

http.Dir("/static/")

(因为这是您的情况下文件系统上的绝对路径)。

请注意 http.Dir 的一些警告,如所述 here :

(即它的目录分隔符与操作系统相关,该方法可以遵循危险的符号链接(symbolic link),并且可以列出以点开头的文件并暴露敏感目录,例如 .git)

关于go - 如何使用 Go Chi 提供静态文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72736418/

相关文章:

go - 如何使用golang进行.docx模板(表格内容)

go - 如何使用乐高

go - 在 Golang 中通过 COM 与 Lotus Notes 交互

linux - 让 GoClipse 在普通的 GO 工作空间中正常工作

go - 有没有一种方法可以在多个处理程序中使用相同的request.Body,而无需手动编写大量代码,或者我需要更改执行此操作的方式?

google-app-engine - GAE Go 运行时 SLA

mysql - 带有 url 参数的 go chi 路由器和 mysql 数据库无法正常工作

http - 如何在 go-chi 中启用 gzip 压缩中间件

rest - 使用/路径变量测试Chi路线