我正在关注building a webpage in 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或其他网络服务器
答案 0 :(得分:9)
图像应该从模板的不同URL路径提供。
您需要使用以下内容定义静态文件的提供位置:
http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("/home/jeff/web/"))))
然后确保<IMG>
源网址类似于:
<img src="/static/foo.jpg" alt="moooooo">
希望有所帮助。