package utils import ( "os" "path/filepath" "strings" ) // PathInfo 路径信息 type PathInfo struct { Dir string // 目录 Ext string // 扩展名 Filename string // 没有扩展名的文件名名称 FullFileName string // 文件全名 } // PathForInfo 解析路径 // 返回文件,路径,文件名等信息 func PathForInfo(path string) (pi PathInfo) { if path == "" { return } ext := filepath.Ext(path) dir, name := filepath.Split(path) pi.Dir = dir pi.Ext = ext pi.Filename = strings.TrimRight(name, ext) pi.FullFileName = name return } func GetFileSize(filepath string) (int64, error) { fi, err := os.Stat(filepath) if err != nil { return 0, err } // get the size return fi.Size(), nil } // JoinUrlPath 域名与uri拼接 func JoinUrlPath(host string, uri string) (urlpath string) { switch { case strings.HasSuffix(host, "/") && strings.HasPrefix(uri, "/"): urlpath = host[0:len(host)-1] + uri case !strings.HasSuffix(host, "/") && !strings.HasPrefix(uri, "/"): urlpath = host + "/" + uri default: urlpath = host + uri } return }