8
8
"path/filepath"
9
9
"sync"
10
10
11
+ "github.com/IceWhaleTech/CasaOS-Common/utils/logger"
11
12
"github.com/labstack/echo/v4"
13
+ "go.uber.org/zap"
12
14
)
13
15
14
16
type FileInfo struct {
@@ -76,7 +78,11 @@ func (s *FileUploadService) UploadFile(
76
78
// uploaded file is folder
77
79
folderPath := filepath .Dir (path + "/" + relativePath )
78
80
if _ , err := os .Stat (folderPath ); os .IsNotExist (err ) {
79
- os .MkdirAll (folderPath , os .ModePerm )
81
+ err := os .MkdirAll (folderPath , os .ModePerm )
82
+ if err != nil {
83
+ s .lock .Unlock ()
84
+ return err
85
+ }
80
86
}
81
87
}
82
88
@@ -124,8 +130,7 @@ func (s *FileUploadService) UploadFile(
124
130
}
125
131
defer src .Close ()
126
132
127
- buf := make ([]byte , int (currentChunkSize ))
128
- _ , err = io .CopyBuffer (file , src , buf )
133
+ _ , err = io .Copy (file , src )
129
134
130
135
if err != nil {
131
136
fmt .Println (err )
@@ -142,9 +147,17 @@ func (s *FileUploadService) UploadFile(
142
147
143
148
// handle file after write all chunk
144
149
if fileInfo .uploadedChunkNum == totalChunks {
145
- file .Close ()
146
- os .Rename (path + "/" + fileName + ".tmp" , path + "/" + fileName )
150
+ err := file .Close ()
151
+ if err != nil {
152
+ s .lock .Unlock ()
153
+ logger .Error ("close file error: " , zap .Error (err ))
154
+ }
147
155
156
+ err = os .Rename (path + "/" + relativePath + ".tmp" , path + "/" + relativePath )
157
+ if err != nil {
158
+ s .lock .Unlock ()
159
+ logger .Error ("rename file error: " , zap .Error (err ))
160
+ }
148
161
// remove upload status info after upload complete
149
162
s .uploadStatus .Delete (identifier )
150
163
}
0 commit comments