Forráskód Böngészése

fix: fix upload folder is wrong (#1611)

CorrectRoadH 1 éve
szülő
commit
54a115ae89
2 módosított fájl, 13 hozzáadás és 1 törlés
  1. 2 0
      route/v2/file.go
  2. 11 1
      service/file_upload.go

+ 2 - 0
route/v2/file.go

@@ -59,6 +59,7 @@ func (c *CasaOS) PostUploadFile(ctx echo.Context) error {
 
 	identifier := ctx.FormValue("identifier")
 	fileName := ctx.FormValue("filename")
+	relativePath := ctx.FormValue("relativePath")
 	bin, err := ctx.FormFile("file")
 
 	if err != nil {
@@ -74,6 +75,7 @@ func (c *CasaOS) PostUploadFile(ctx echo.Context) error {
 		totalChunks,
 		totalSize,
 		identifier,
+		relativePath,
 		fileName,
 		bin,
 	)

+ 11 - 1
service/file_upload.go

@@ -5,6 +5,7 @@ import (
 	"io"
 	"mime/multipart"
 	"os"
+	"path/filepath"
 	"sync"
 
 	"github.com/labstack/echo/v4"
@@ -63,6 +64,7 @@ func (s *FileUploadService) UploadFile(
 	totalChunks int64,
 	totalSize int64,
 	identifier string,
+	relativePath string,
 	fileName string,
 	bin *multipart.FileHeader,
 ) error {
@@ -70,7 +72,15 @@ func (s *FileUploadService) UploadFile(
 	fileInfoTemp, ok := s.uploadStatus.Load(identifier)
 	var fileInfo *FileInfo
 
-	file, err := os.OpenFile(path+"/"+fileName+".tmp", os.O_WRONLY|os.O_CREATE, 0644)
+	if relativePath != fileName {
+		// uploaded file is folder
+		folderPath := filepath.Dir(path + "/" + relativePath)
+		if _, err := os.Stat(folderPath); os.IsNotExist(err) {
+			os.MkdirAll(folderPath, os.ModePerm)
+		}
+	}
+
+	file, err := os.OpenFile(path+"/"+relativePath+".tmp", os.O_WRONLY|os.O_CREATE, 0644)
 	if err != nil {
 		s.lock.Unlock()
 		return err