fix: fix upload folder fail (#1614)
Signed-off-by: CorrectRoadH <a778917369@gmail.com>
This commit is contained in:
parent
29d16d13ba
commit
fffdc7fd5e
2 changed files with 19 additions and 6 deletions
|
@ -120,7 +120,7 @@ func InitV2Router() http.Handler {
|
||||||
// jump validate when upload file
|
// jump validate when upload file
|
||||||
// because file upload can't pass validate
|
// because file upload can't pass validate
|
||||||
// issue: https://github.com/deepmap/oapi-codegen/issues/514
|
// issue: https://github.com/deepmap/oapi-codegen/issues/514
|
||||||
return strings.Contains(c.Request().URL.Path, "file/upload")
|
return strings.Contains(c.Request().Header[echo.HeaderContentType][0], "multipart/form-data")
|
||||||
},
|
},
|
||||||
Options: openapi3filter.Options{AuthenticationFunc: openapi3filter.NoopAuthenticationFunc},
|
Options: openapi3filter.Options{AuthenticationFunc: openapi3filter.NoopAuthenticationFunc},
|
||||||
}))
|
}))
|
||||||
|
|
|
@ -8,7 +8,9 @@ import (
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
|
"github.com/IceWhaleTech/CasaOS-Common/utils/logger"
|
||||||
"github.com/labstack/echo/v4"
|
"github.com/labstack/echo/v4"
|
||||||
|
"go.uber.org/zap"
|
||||||
)
|
)
|
||||||
|
|
||||||
type FileInfo struct {
|
type FileInfo struct {
|
||||||
|
@ -76,7 +78,11 @@ func (s *FileUploadService) UploadFile(
|
||||||
// uploaded file is folder
|
// uploaded file is folder
|
||||||
folderPath := filepath.Dir(path + "/" + relativePath)
|
folderPath := filepath.Dir(path + "/" + relativePath)
|
||||||
if _, err := os.Stat(folderPath); os.IsNotExist(err) {
|
if _, err := os.Stat(folderPath); os.IsNotExist(err) {
|
||||||
os.MkdirAll(folderPath, os.ModePerm)
|
err := os.MkdirAll(folderPath, os.ModePerm)
|
||||||
|
if err != nil {
|
||||||
|
s.lock.Unlock()
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -124,8 +130,7 @@ func (s *FileUploadService) UploadFile(
|
||||||
}
|
}
|
||||||
defer src.Close()
|
defer src.Close()
|
||||||
|
|
||||||
buf := make([]byte, int(currentChunkSize))
|
_, err = io.Copy(file, src)
|
||||||
_, err = io.CopyBuffer(file, src, buf)
|
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
|
@ -142,9 +147,17 @@ func (s *FileUploadService) UploadFile(
|
||||||
|
|
||||||
// handle file after write all chunk
|
// handle file after write all chunk
|
||||||
if fileInfo.uploadedChunkNum == totalChunks {
|
if fileInfo.uploadedChunkNum == totalChunks {
|
||||||
file.Close()
|
err := file.Close()
|
||||||
os.Rename(path+"/"+fileName+".tmp", path+"/"+fileName)
|
if err != nil {
|
||||||
|
s.lock.Unlock()
|
||||||
|
logger.Error("close file error: ", zap.Error(err))
|
||||||
|
}
|
||||||
|
|
||||||
|
err = os.Rename(path+"/"+relativePath+".tmp", path+"/"+relativePath)
|
||||||
|
if err != nil {
|
||||||
|
s.lock.Unlock()
|
||||||
|
logger.Error("rename file error: ", zap.Error(err))
|
||||||
|
}
|
||||||
// remove upload status info after upload complete
|
// remove upload status info after upload complete
|
||||||
s.uploadStatus.Delete(identifier)
|
s.uploadStatus.Delete(identifier)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue