5

我正在关注关于在 go 中构建网页的教程。本教程中的所有内容都很容易掌握,但我正在尝试对其进行扩展。具体来说,我正在尝试添加一些静态文件(图片)。我一直在浏览 go docs 并遇到了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 标签。

在此处输入图像描述

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

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

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

4

1 回答 1

9

图像应从模板的不同 URL 路径提供。

您需要使用以下内容定义将提供静态文件的位置:

http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("/home/jeff/web/"))))

然后确保<IMG>源 URL 类似于:

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

希望有帮助。

于 2013-07-17T02:59:28.277 回答