转到网页静态文件服务

Jef*_*eff 5 go

我对网络开发一无所知,并认为最好的学习方法就是从头开始.如果这是微不足道的道歉.

我正在按照关于构建网页的教程进行操作.教程中的所有内容都很容易掌握,但我正在努力扩展它.具体来说,我正在尝试添加一些静态文件(图片).我一直在浏览go文档并遇到FileServer并添加

http.ServeFile(w, r, "/home/jeff/web/foo.jpg")
Run Code Online (Sandbox Code Playgroud)

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

<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>
Run Code Online (Sandbox Code Playgroud)

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

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

在此输入图像描述

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

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

我用http.ListenAndServe(":8080", nil)main是其他用语我不使用apache或其他网络服务器

Int*_*net 9

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

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

http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("/home/jeff/web/"))))
Run Code Online (Sandbox Code Playgroud)

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

<img src="/static/foo.jpg" alt="moooooo">
Run Code Online (Sandbox Code Playgroud)

希望有所帮助.