fs.go 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  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. "os/exec"
  11. "strings"
  12. )
  13. type Config struct {
  14. FilePath string `json:"filePath"`
  15. DeletePath string `json:"deletePath"`
  16. Log string `json:"log"`
  17. Addr string `json:"addr"`
  18. }
  19. var Conf = &Config{}
  20. func FileUploadHandle(w http.ResponseWriter, r *http.Request) {
  21. var code int
  22. var msg string
  23. var filename string
  24. defer func() {
  25. resp := map[string]interface{}{
  26. "code": code,
  27. "msg": msg,
  28. "url": Conf.Addr + filename,
  29. }
  30. bys, _ := json.Marshal(resp)
  31. w.Write(bys)
  32. }()
  33. file, fileHeader, err := r.FormFile("file")
  34. if err != nil {
  35. log.Error("FileUploadHandle received file error ->(%v)", err)
  36. code = 1
  37. msg = err.Error()
  38. return
  39. }
  40. defer file.Close()
  41. originFilename := fileHeader.Filename
  42. now := time.Now()
  43. timePoint := fmt.Sprintf("%v-%v-%v-%v-%v-%v", now.Year(), now.Month(), now.Day(), now.Hour(), now.Minute(), now.Second())
  44. filename = timePoint + "-" + originFilename
  45. // check file path
  46. fmt.Println(os.Getwd())
  47. fp := Conf.FilePath
  48. _, err = os.Stat(fp)
  49. if err != nil {
  50. log.Error("FileUploadHandle check folder path(%v) error ->(%v)", fp, err)
  51. err = os.MkdirAll(fp, os.ModePerm)
  52. if err != nil {
  53. log.Error("FileUploadHandle mkdir folder path(%v) error ->(%v)", fp, err)
  54. code = 2
  55. msg = err.Error()
  56. return
  57. }
  58. }
  59. filename = fp + "/" + filename
  60. f, err := os.Create(filename)
  61. if err != nil {
  62. log.Error("FileUploadHandle create file (%v) error ->(%v)", filename, err)
  63. code = 3
  64. msg = err.Error()
  65. return
  66. }
  67. defer f.Close()
  68. length, err := io.Copy(f, file)
  69. if err != nil {
  70. log.Error("FileUploadHandle copy file (%v) error ->(%v)", filename, err)
  71. code = 4
  72. msg = err.Error()
  73. return
  74. }
  75. log.Debug("FileUploadHandle copy file (%v) success with length(%v)", filename, length)
  76. code = 0
  77. msg = "Ok"
  78. }
  79. func DeleteFile(w http.ResponseWriter, r *http.Request) {
  80. var name = r.FormValue("name")
  81. if len(name) < 1 {
  82. w.WriteHeader(404)
  83. w.Write([]byte("name is empty"))
  84. log.Error("DeleteFile name is empty")
  85. return
  86. }
  87. var deleteFile= Conf.DeletePath
  88. if !strings.HasSuffix(deleteFile, "/") {
  89. deleteFile += "/"
  90. }
  91. cmd := exec.Command("mv", name, Conf.DeletePath)
  92. output,err :=cmd.CombinedOutput()
  93. if err != nil {
  94. w.Write([]byte(err.Error()))
  95. log.Error("DeleteFile command with name: %v, output: %v error: %v", name, deleteFile, err)
  96. return
  97. }
  98. log.Debug("DeleteFile command with name: %v, output: %v success with output: %v", name, deleteFile, string(output))
  99. w.Write([]byte("Success"))
  100. return
  101. }