github.com/goravel/framework@v1.13.9/support/file/file.go (about) 1 package file 2 3 import ( 4 "errors" 5 "os" 6 "path/filepath" 7 "strings" 8 "time" 9 10 "github.com/gabriel-vasile/mimetype" 11 ) 12 13 func ClientOriginalExtension(file string) string { 14 return strings.ReplaceAll(filepath.Ext(file), ".", "") 15 } 16 17 func Contain(file string, search string) bool { 18 if Exists(file) { 19 data, err := os.ReadFile(file) 20 if err != nil { 21 return false 22 } 23 return strings.Contains(string(data), search) 24 } 25 26 return false 27 } 28 29 func Create(file string, content string) error { 30 if err := os.MkdirAll(filepath.Dir(file), os.ModePerm); err != nil { 31 return err 32 } 33 34 f, err := os.Create(file) 35 if err != nil { 36 return err 37 } 38 defer f.Close() 39 40 if _, err = f.WriteString(content); err != nil { 41 return err 42 } 43 44 return nil 45 } 46 47 func Exists(file string) bool { 48 _, err := os.Stat(file) 49 return err == nil 50 } 51 52 // Extension Supported types: https://github.com/gabriel-vasile/mimetype/blob/master/supported_mimes.md 53 func Extension(file string, originalWhenUnknown ...bool) (string, error) { 54 mtype, err := mimetype.DetectFile(file) 55 if err != nil { 56 return "", err 57 } 58 59 if mtype.String() == "" { 60 if len(originalWhenUnknown) > 0 { 61 if originalWhenUnknown[0] { 62 return ClientOriginalExtension(file), nil 63 } 64 } 65 66 return "", errors.New("unknown file extension") 67 } 68 69 return strings.TrimPrefix(mtype.Extension(), "."), nil 70 } 71 72 func LastModified(file, timezone string) (time.Time, error) { 73 fileInfo, err := os.Stat(file) 74 if err != nil { 75 return time.Time{}, err 76 } 77 78 l, err := time.LoadLocation(timezone) 79 if err != nil { 80 return time.Time{}, err 81 } 82 83 return fileInfo.ModTime().In(l), nil 84 } 85 86 func MimeType(file string) (string, error) { 87 mtype, err := mimetype.DetectFile(file) 88 if err != nil { 89 return "", err 90 } 91 92 return mtype.String(), nil 93 } 94 95 func Remove(file string) error { 96 _, err := os.Stat(file) 97 if err != nil { 98 if os.IsNotExist(err) { 99 return nil 100 } 101 102 return err 103 } 104 105 return os.RemoveAll(file) 106 } 107 108 func Size(file string) (int64, error) { 109 fileInfo, err := os.Open(file) 110 if err != nil { 111 return 0, err 112 } 113 defer fileInfo.Close() 114 115 fi, err := fileInfo.Stat() 116 if err != nil { 117 return 0, err 118 } 119 120 return fi.Size(), nil 121 }