ghttp.Server静态文件处理改进,增加AddSearchPath方法,可添加自定义的静态文件w搜索路径

This commit is contained in:
John
2018-08-26 19:42:30 +08:00
parent 1f6cfcc466
commit 53c86966d9
4 changed files with 16 additions and 10 deletions

3
TODO
View File

@ -22,7 +22,7 @@ ghttp路由功能增加分组路由特性
ghttp增加返回数据压缩机制
检查windows下的平滑重启失效问题
gview中的template标签失效问题
ghttp静态文件服务改进(特别是403返回状态的修改)
gfile文件stat信息使用gfsnotify进行缓存更新改进
@ -60,3 +60,4 @@ DONE:
31. gvalid包增加struct tag的校验规则、自定义错误提示信息绑定的支持特性
32. 增加文件缓存包可根据fsnotify机制进行缓存更新
33. *any/:name路由匹配路由改进支持不带名字的*/:路由规则;
34. ghttp静态文件服务改进(特别是403返回状态的修改)

View File

@ -232,15 +232,14 @@ func (s *Server) Start() error {
return errors.New("server is already running")
}
// 如果设置了静态文件目录,那么严格按照静态文件目录进行检索
// 否则,默认使用当前可执行文件目录,并且如果是开发环境默认也会添加main包的源码目录路径做为二级检索
// 如果设置了静态文件目录,那么优先按照静态文件目录进行检索,其次是当前可执行文件工作目录;
// 并且如果是开发环境默认也会添加main包的源码目录路径做为二级检索
if s.config.ServerRoot != "" {
s.paths.Set(s.config.ServerRoot)
} else {
s.paths.Set(gfile.SelfDir())
if p := gfile.MainPkgPath(); gfile.Exists(p) {
s.paths.Add(p)
}
}
s.paths.Add(gfile.SelfDir())
if p := gfile.MainPkgPath(); gfile.Exists(p) {
s.paths.Add(p)
}
// 底层http server配置

View File

@ -347,6 +347,11 @@ func (s *Server) SetNameToUriType(t int) {
s.nameToUriType.Set(t)
}
// 添加静态文件搜索目录,必须给定目录的绝对路径
func (s *Server) AddSearchPath(path string) error {
return s.paths.Add(path)
}
// 获取日志写入的回调函数
func (s *Server) GetLogHandler() func(r *Request, error ... interface{}) {
if v := s.logHandler.Val(); v != nil {

View File

@ -140,10 +140,11 @@ func (s *Server)callServeHandler(h *handlerItem, r *Request) {
}
}
// http server静态文件处理
// http server静态文件处理path必须为完整的**绝对路径**
func (s *Server)serveFile(r *Request, path string) {
f, err := os.Open(path)
if err != nil {
if os.IsExist(err) {
r.Response.WriteStatus(http.StatusNotFound)
return
}
info, _ := f.Stat()