diff --git a/lib/file/file.go b/lib/file/file.go index 7b643817..d502de7d 100644 --- a/lib/file/file.go +++ b/lib/file/file.go @@ -6,6 +6,7 @@ import ( "io" "net" "net/http" + "os" "time" "ems.agt/lib/dborm" @@ -118,3 +119,54 @@ func GetFile(w http.ResponseWriter, r *http.Request) { response := Response{mmlResult} services.ResponseWithJson(w, http.StatusOK, response) } + +// 格式文件大小单位 +func FormatFileSize(fileSize float64) (size string) { + if fileSize < 1024 { + return fmt.Sprintf("%.2fB", fileSize/float64(1)) + } else if fileSize < (1024 * 1024) { + return fmt.Sprintf("%.2fKB", fileSize/float64(1024)) + } else if fileSize < (1024 * 1024 * 1024) { + return fmt.Sprintf("%.2fMB", fileSize/float64(1024*1024)) + } else if fileSize < (1024 * 1024 * 1024 * 1024) { + return fmt.Sprintf("%.2fGB", fileSize/float64(1024*1024*1024)) + } else if fileSize < (1024 * 1024 * 1024 * 1024 * 1024) { + return fmt.Sprintf("%.2fTB", fileSize/float64(1024*1024*1024*1024)) + } else { + return fmt.Sprintf("%.2fEB", fileSize/float64(1024*1024*1024*1024*1024)) + } +} + +func IsSymlink(mode os.FileMode) bool { + return mode&os.ModeSymlink != 0 +} + +const dotCharacter = 46 + +func IsHidden(path string) bool { + return path[0] == dotCharacter +} + +func GetMimeType(path string) string { + file, err := os.Open(path) + if err != nil { + return "" + } + defer file.Close() + + buffer := make([]byte, 512) + _, err = file.Read(buffer) + if err != nil { + return "" + } + mimeType := http.DetectContentType(buffer) + return mimeType +} + +func GetSymlink(path string) string { + linkPath, err := os.Readlink(path) + if err != nil { + return "" + } + return linkPath +}