| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- package controller
- import (
- uuid "github.com/iris-contrib/go.uuid"
- "github.com/kataras/iris/v12/mvc"
- "io"
- "mime/multipart"
- "os"
- "path/filepath"
- "strings"
- "time"
- "xps/cmd/constant"
- "xps/pkg/system/service"
- "xps/pkg/utils"
- )
- // client version and secret, it should be from client side
- const (
- UploadDir string = "E:/dev-x/xps-server-g5/cmd/main/public/upload/"
- UrlBase string = "/upload/"
- )
- type FileData struct {
- FileInfo *multipart.FileHeader
- FileData *multipart.File
- }
- type UploadController struct {
- Base
- Service service.UploadService
- }
- func (c *UploadController) BeforeActivation(b mvc.BeforeActivation) {
- b.Handle("POST", "/file", "UploadFile")
- b.Handle("POST", "/files", "UploadFiles")
- }
- // UploadFile :Single Upload
- func (c *UploadController) UploadFile() *JsonResult {
- ocId := c.GetCurOcId()
- userId := c.GetCurUserId()
- f, fh, err := c.Ctx.FormFile("uploadfile")
- if err != nil {
- return ResultErr(err.Error(), nil)
- }
- defer f.Close()
- oldFileName := fh.Filename
- targetFileName := c.GenerateNewFileName(oldFileName)
- out, err := os.OpenFile(targetFileName, os.O_CREATE|os.O_RDWR|os.O_APPEND, 0666)
- if err != nil {
- return ResultErr(err.Error(), nil)
- }
- defer out.Close()
- _, err = io.Copy(out, f)
- if err != nil {
- return ResultErr(err.Error(), nil)
- }
- targetFile := service.TargetFile{
- FileName: oldFileName,
- FilePath: targetFileName,
- }
- file, err := c.Service.UploadFile(ocId, userId, constant.DOC_DIR_TEMP, targetFile)
- if err != nil {
- return ResultErr(err.Error(), nil)
- } else {
- return ResultOk("获取成功", file)
- }
- }
- // UploadFiles :Multiple Upload
- func (c *UploadController) UploadFiles() *JsonResult {
- _, files, err := utils.UploadMultiFiles(c.Ctx)
- if err != nil {
- return ResultErr(err.Error(), nil)
- } else {
- return ResultOk("获取成功", files)
- }
- }
- // CreateDateDir Create date directory
- func (c *UploadController) CreateDateDir() (srcPath string) {
- folderName := time.Now().Format("20060102")
- // curPath, _ := os.Getwd()
- src := filepath.Join(UploadDir, folderName)
- _, err := os.Stat(srcPath)
- if os.IsNotExist(err) {
- _ = os.Mkdir(src, os.ModePerm)
- _ = os.Chmod(src, os.ModePerm)
- }
- return src
- }
- // GenerateNewFileName Generate new file name
- func (c *UploadController) GenerateNewFileName(oldFileName string) (srcPath string) {
- u1, _ := uuid.NewV4()
- newFileName := u1.String()
- src := c.CreateDateDir()
- dotIndex := strings.LastIndex(oldFileName, ".")
- if dotIndex != -1 && dotIndex != 0 {
- newFileName += oldFileName[dotIndex:]
- }
- src = filepath.Join(src, newFileName)
- return src
- }
|