123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- package fs
- import (
- "github.com/Tangmz/tangs/log"
- "net/http"
- "time"
- "fmt"
- "os"
- "io"
- "encoding/json"
- "os/exec"
- "strings"
- )
- type Config struct {
- FilePath string `json:"filePath"`
- DeletePath string `json:"deletePath"`
- Log string `json:"log"`
- Addr string `json:"addr"`
- }
- var Conf = &Config{}
- func FileUploadHandle(w http.ResponseWriter, r *http.Request) {
- var code int
- var msg string
- var filename string
- defer func() {
- resp := map[string]interface{}{
- "code": code,
- "msg": msg,
- "url": Conf.Addr + filename,
- }
- 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())
- filename = timePoint + "-" + originFilename
-
- // 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"
- }
- func DeleteFile(w http.ResponseWriter, r *http.Request) {
- var name = r.FormValue("name")
- if len(name) < 1 {
- w.WriteHeader(404)
- w.Write([]byte("name is empty"))
- log.Error("DeleteFile name is empty")
- return
- }
-
- var deleteFile= Conf.DeletePath
- if !strings.HasSuffix(deleteFile, "/") {
- deleteFile += "/"
- }
- cmd := exec.Command("mv", name, Conf.DeletePath)
- output,err :=cmd.CombinedOutput()
- if err != nil {
- w.Write([]byte(err.Error()))
- log.Error("DeleteFile command with name: %v, output: %v error: %v", name, deleteFile, err)
- return
- }
-
- log.Debug("DeleteFile command with name: %v, output: %v success with output: %v", name, deleteFile, string(output))
- w.Write([]byte("Success"))
- return
- }
|