Go 语言内部其实已经提供了 http.ServeFile
,通过这个函数可以实现静态文件的服务。beego 针对这个功能进行了一层封装,通过下面的方式进行静态文件所在目录的注册:
beego.SetStaticPath("/static","public")
- 第一个参数是 URL路径,url 路径信息
- 第二个参数是 静态文件所在服务器的物理目录(相对应用所在的目录)
beego 支持多个目录的静态文件注册,用户可以注册如下的静态文件目录:
beego.SetStaticPath("/images", "images")
beego.SetStaticPath("/css", "css")
beego.SetStaticPath("/js", "js")
设置了如上的静态目录之后,假如用户访问 /images/login/login.png
,那么就会访问应用对应的物理目录下面的 images/login/login.png
文件。如果用户访问 /static/img/logo.png
,那么就访问 public/img/logo.png
文件。
默认情况下 beego 会判断静态文件所在物理目录下对应的文件是否存在,不存在直接返回 404 页面。如果请求的是 index.html
,那么由于 http.ServeFile
默认是会跳转的,不提供该页面的显示。因此 beego 可以设置 beego.BConfig.WebConfig.DirectoryIndex=true
来显示 index.html
页面。而且开启该功能之后,用户访问目录就会显示该目录下所有的文件列表。