fs.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. package fs
  2. import (
  3. "github.com/Tangmz/tangs/log"
  4. "net/http"
  5. "time"
  6. "fmt"
  7. "os"
  8. "io"
  9. "encoding/json"
  10. )
  11. type Config struct {
  12. FilePath string `json:"filePath"`
  13. Log string `json:"log"`
  14. }
  15. var Conf = &Config{}
  16. func FileUploadHandle(w http.ResponseWriter, r *http.Request) {
  17. var code int
  18. var msg string
  19. defer func() {
  20. resp := map[string]interface{}{
  21. "code": code,
  22. "msg": msg,
  23. }
  24. bys, _ := json.Marshal(resp)
  25. w.Write(bys)
  26. }()
  27. file, fileHeader, err := r.FormFile("file")
  28. if err != nil {
  29. log.Error("FileUploadHandle received file error ->(%v)", err)
  30. code = 1
  31. msg = err.Error()
  32. return
  33. }
  34. defer file.Close()
  35. originFilename := fileHeader.Filename
  36. now := time.Now()
  37. timePoint := fmt.Sprintf("%v%v%v%v%v%v", now.Year(), now.Month(), now.Day(), now.Hour(), now.Minute(), now.Second())
  38. var filename string = originFilename + "-" + timePoint
  39. // check file path
  40. fmt.Println(os.Getwd())
  41. fp := Conf.FilePath
  42. _, err = os.Stat(fp)
  43. if err != nil {
  44. log.Error("FileUploadHandle check folder path(%v) error ->(%v)", fp, err)
  45. err = os.MkdirAll(fp, os.ModePerm)
  46. if err != nil {
  47. log.Error("FileUploadHandle mkdir folder path(%v) error ->(%v)", fp, err)
  48. code = 2
  49. msg = err.Error()
  50. return
  51. }
  52. }
  53. filename = fp + "/" +filename
  54. f, err := os.Create(filename)
  55. if err != nil {
  56. log.Error("FileUploadHandle create file (%v) error ->(%v)", filename, err)
  57. code = 3
  58. msg = err.Error()
  59. return
  60. }
  61. defer f.Close()
  62. length, err := io.Copy(f, file)
  63. if err != nil {
  64. log.Error("FileUploadHandle copy file (%v) error ->(%v)", filename, err)
  65. code = 4
  66. msg = err.Error()
  67. return
  68. }
  69. log.Debug("FileUploadHandle copy file (%v) success with length(%v)", filename, length)
  70. code = 0
  71. msg = "Ok"
  72. }