猿问

如何通过 http 提供静态文件

我正在学习在 go 中构建网页的教程。本教程中的所有内容都很容易掌握,但我正在尝试对其进行扩展。具体来说,我正在尝试添加一些静态文件(图片)。我一直在浏览 go 文档并遇到FileServer并添加


http.ServeFile(w, r, "/home/jeff/web/foo.jpg")

在我的处理程序中,我看到正在提供图像,但它没有使用模板


<h1>{{.Title}}</h1>

<p>[<a href="/edit/{{.Title}}">edit</a>]</p>


<img src="foo.jpg" alt="moooooo">

<img src="foo.jpg" alt="foooooo">


<div>{{printf "%s" .Body}}</div>

*我也尝试提供图像的完整路径。


我想要做的是让图像占据我在模板中小心放置的 html 标签。

我希望图像出现在我告诉他们的地方,但在它们应该出现的地方得到空白图像。我没有看到任何说找不到文件的错误。

我认为这应该起作用的方式(再次没有这方面的经验)是通过告诉服务器我有一个包含一些静态文件的目录,并且每当模板请求在此处检查图像并在找到时为其提供服务。似乎没有这么简单。我究竟做错了什么?我怎样才能让它发挥作用?

换句话说,我使用的http.ListenAndServe(":8080", nil)是我的main,我没有使用 apache 或其他一些网络服务器


POPMUISE
浏览 241回答 1
1回答

翻翻过去那场雪

图像应该从不同的 URL 路径提供给模板。您需要使用以下内容定义从何处提供静态文件:http.Handle("/static/",&nbsp;http.StripPrefix("/static/",&nbsp;http.FileServer(http.Dir("/home/jeff/web/"))))然后确保<IMG>源 URL 类似于:<img&nbsp;src="/static/foo.jpg"&nbsp;alt="moooooo">希望有帮助。
随时随地看视频慕课网APP

相关分类

Go
我要回答