file.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. package file
  2. import (
  3. "fmt"
  4. "io/ioutil"
  5. "mime/multipart"
  6. "os"
  7. "path"
  8. )
  9. // 获取文件大小
  10. func GetSize(f multipart.File) (int, error) {
  11. content, err := ioutil.ReadAll(f)
  12. return len(content), err
  13. }
  14. // 获取文件扩展名
  15. func GetExt(fileName string) string {
  16. return path.Ext(fileName)
  17. }
  18. // 检查文件是否存在
  19. func CheckNotExist(src string) bool {
  20. _, err := os.Stat(src)
  21. return os.IsNotExist(err)
  22. }
  23. // 检查文件是否具有权限
  24. func CheckPermission(src string) bool {
  25. _, err := os.Stat(src)
  26. return os.IsPermission(err)
  27. }
  28. // 创建文件
  29. func MkDir(src string) error {
  30. err := os.MkdirAll(src, os.ModePerm)
  31. if err != nil {
  32. return err
  33. }
  34. return nil
  35. }
  36. // 如果文件不存则创建
  37. func IsNotExistMkDir(src string) error {
  38. if notExist := CheckNotExist(src); notExist == true {
  39. if err := MkDir(src); err != nil {
  40. return err
  41. }
  42. }
  43. return nil
  44. }
  45. // 打开文件,通过特殊的模式
  46. func Open(name string, flag int, perm os.FileMode) (*os.File, error) {
  47. f, err := os.OpenFile(name, flag, perm)
  48. if err != nil {
  49. return nil, err
  50. }
  51. return f, err
  52. }
  53. // 尝试打开文件
  54. func MustOpen(fileName, filePath string) (*os.File, error) {
  55. dir, err := os.Getwd()
  56. if err != nil {
  57. return nil, fmt.Errorf("os.Getwd err: %v", err)
  58. }
  59. src := dir + "/" + filePath
  60. perm := CheckPermission(src)
  61. if perm == true {
  62. return nil, fmt.Errorf("file.CheckPermission Permission denied src: %s", src)
  63. }
  64. err = IsNotExistMkDir(src)
  65. if err != nil {
  66. return nil, fmt.Errorf("file.IsNotExistMkDir src: %s, err: %v", src, err)
  67. }
  68. f, err := Open(src+fileName, os.O_APPEND|os.O_CREATE|os.O_RDWR, 0644)
  69. if err != nil {
  70. return nil, fmt.Errorf("fail to OpenFile : %v", err)
  71. }
  72. return f, nil
  73. }