mirror of
https://gitee.com/johng/gf
synced 2026-06-07 02:12:11 +08:00
ghttp.Server静态文件处理改进,增加AddSearchPath方法,可添加自定义的静态文件w搜索路径
This commit is contained in:
3
TODO
3
TODO
@ -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返回状态的修改);
|
||||
|
||||
@ -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配置
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -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()
|
||||
|
||||
Reference in New Issue
Block a user