|
@@ -0,0 +1,82 @@
|
|
|
|
+package fs
|
|
|
|
+
|
|
|
|
+import (
|
|
|
|
+ "github.com/Tangmz/tangs/log"
|
|
|
|
+ "net/http"
|
|
|
|
+ "time"
|
|
|
|
+ "fmt"
|
|
|
|
+ "os"
|
|
|
|
+ "io"
|
|
|
|
+ "encoding/json"
|
|
|
|
+)
|
|
|
|
+
|
|
|
|
+type Config struct {
|
|
|
|
+ FilePath string `json:"filePath"`
|
|
|
|
+ Log string `json:"log"`
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+var Conf = &Config{}
|
|
|
|
+
|
|
|
|
+func FileUploadHandle(w http.ResponseWriter, r *http.Request) {
|
|
|
|
+ var code int
|
|
|
|
+ var msg string
|
|
|
|
+ defer func() {
|
|
|
|
+ resp := map[string]interface{}{
|
|
|
|
+ "code": code,
|
|
|
|
+ "msg": msg,
|
|
|
|
+ }
|
|
|
|
+ bys, _ := json.Marshal(resp)
|
|
|
|
+ w.Write(bys)
|
|
|
|
+ }()
|
|
|
|
+ file, fileHeader, err := r.FormFile("file")
|
|
|
|
+ if err != nil {
|
|
|
|
+ log.Error("FileUploadHandle received file error ->(%v)", err)
|
|
|
|
+ code = 1
|
|
|
|
+ msg = err.Error()
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ defer file.Close()
|
|
|
|
+
|
|
|
|
+ originFilename := fileHeader.Filename
|
|
|
|
+ now := time.Now()
|
|
|
|
+ timePoint := fmt.Sprintf("%v%v%v%v%v%v", now.Year(), now.Month(), now.Day(), now.Hour(), now.Minute(), now.Second())
|
|
|
|
+ var filename string = originFilename + "-" + timePoint
|
|
|
|
+
|
|
|
|
+ // check file path
|
|
|
|
+
|
|
|
|
+ fmt.Println(os.Getwd())
|
|
|
|
+ fp := Conf.FilePath
|
|
|
|
+ _, err = os.Stat(fp)
|
|
|
|
+ if err != nil {
|
|
|
|
+ log.Error("FileUploadHandle check folder path(%v) error ->(%v)", fp, err)
|
|
|
|
+ err = os.MkdirAll(fp, os.ModePerm)
|
|
|
|
+ if err != nil {
|
|
|
|
+ log.Error("FileUploadHandle mkdir folder path(%v) error ->(%v)", fp, err)
|
|
|
|
+ code = 2
|
|
|
|
+ msg = err.Error()
|
|
|
|
+ return
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ filename = fp + "/" +filename
|
|
|
|
+ f, err := os.Create(filename)
|
|
|
|
+ if err != nil {
|
|
|
|
+ log.Error("FileUploadHandle create file (%v) error ->(%v)", filename, err)
|
|
|
|
+ code = 3
|
|
|
|
+ msg = err.Error()
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ defer f.Close()
|
|
|
|
+ length, err := io.Copy(f, file)
|
|
|
|
+ if err != nil {
|
|
|
|
+ log.Error("FileUploadHandle copy file (%v) error ->(%v)", filename, err)
|
|
|
|
+ code = 4
|
|
|
|
+ msg = err.Error()
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ log.Debug("FileUploadHandle copy file (%v) success with length(%v)", filename, length)
|
|
|
|
+ code = 0
|
|
|
|
+ msg = "Ok"
|
|
|
|
+}
|