Files
be.ems/features/file/file.go
2024-11-22 10:06:51 +08:00

142 lines
3.3 KiB
Go

package file
import (
"net/http"
"path/filepath"
"be.ems/lib/log"
"be.ems/lib/services"
"be.ems/restagent/config"
"github.com/gorilla/mux"
)
var (
// parameter config management
UriFile = config.DefaultUriPrefix + "/fileManagement/{apiVersion}/{location}/file"
CustomUriFile = config.UriPrefix + "/fileManagement/{apiVersion}/{location}/file"
)
// func init() {
// routes.Register("POST", UriFile, UploadFile, nil)
// routes.Register("GET", UriFile, DownloadFile, nil)
// routes.Register("DELETE", UriFile, DeleteFile, nil)
// }
func UploadFile(w http.ResponseWriter, r *http.Request) {
log.Debug("UploadFile processing... ")
// _, err := services.CheckFrontValidRequest(w, r)
// if err != nil {
// log.Error("Http request error:", err)
// return
// }
vars := mux.Vars(r)
location := vars["location"]
if location == "" {
log.Error("location is empty")
services.ResponseNotFound404UriNotExist(w, r)
return
}
params := r.URL.Query()
rename, ok := params["rename"]
if !ok {
log.Info("rename parameter is not exist")
}
log.Debug("rename:", rename)
var path, fileName string
if len(rename) > 0 {
fileName = rename[0]
}
if location == "upload" {
path = config.GetYamlConfig().OMC.Upload
fileNamePath, err := services.HandleUploadFile(r, path, fileName)
if err != nil {
log.Error("Faile to HandleUploadFile:", err)
services.ResponseInternalServerError500ProcessError(w, err)
return
}
fileName = fileNamePath
} else {
path = config.GetYamlConfig().OMC.FrontUpload
fileNamePath, err := services.HandleUploadFile(r, path, fileName)
if err != nil {
log.Error("Faile to HandleUploadFile:", err)
services.ResponseInternalServerError500ProcessError(w, err)
return
}
fileName = fileNamePath
}
log.Debugf("upload file=%s to path=%s", fileName, path)
services.ResponseStatusOK204NoContent(w)
return
}
func DownloadFile(w http.ResponseWriter, r *http.Request) {
log.Debug("DownloadFile processing... ")
// _, err := services.CheckFrontValidRequest(w, r)
// if err != nil {
// log.Error("Request error:", err)
// return
// }
vars := mux.Vars(r)
location := vars["location"]
if location == "" {
log.Error("location is empty")
services.ResponseNotFound404UriNotExist(w, r)
return
}
// 全路径文件下载
filePath := r.URL.Query().Get("path")
if location == "path" && filePath != "" {
// 截取文件路径
dir := filepath.Dir(filePath)
// 截取文件名
fileName := filepath.Base(filePath)
services.ResponseFileWithNameAndMD5(w, http.StatusOK, fileName, dir, "")
return
}
params := r.URL.Query()
fileNames, ok := params["loc"]
if !ok {
log.Info("loc parameter is not exist")
}
var path string
if location == "upload" {
path = config.GetYamlConfig().OMC.Upload
} else {
path = config.GetYamlConfig().OMC.FrontUpload
}
for _, fileName := range fileNames {
services.ResponseFileWithNameAndMD5(w, http.StatusOK, fileName, path, "")
}
return
}
func DeleteFile(w http.ResponseWriter, r *http.Request) {
log.Debug("DeleteFile processing... ")
// _, err := services.CheckFrontValidRequest(w, r)
// if err != nil {
// log.Error("Request error:", err)
// return
// }
vars := mux.Vars(r)
neType := vars["neType"]
if neType == "" {
log.Error("neType is empty")
services.ResponseNotFound404UriNotExist(w, r)
return
}
services.ResponseStatusOK204NoContent(w)
return
}