@@ -3,6 +3,7 @@ package fileExplorer
33import (
44 "fmt"
55 "go-api/infrastructure/helpers"
6+ "go-api/infrastructure/myLog"
67 "go-api/infrastructure/reqRes"
78 "io"
89 "net/http"
@@ -22,35 +23,46 @@ func (controller *Controller) PutFile(w reqRes.MyResponseWriter, r *reqRes.MyReq
2223 return
2324 }
2425
25- formFile , handler , err := r .FormFile ("file" )
26- if err != nil {
27- message := fmt .Sprintf ("Failed to retrieve file: \n %v" , err )
28- w .Error (message , http .StatusInternalServerError )
26+ files := r .MultipartForm .File ["files" ]
27+ if len (files ) == 0 {
28+ w .Error ("No files uploaded" , http .StatusBadRequest )
2929 return
3030 }
31- defer helpers .CloseSafely (formFile )
32-
33- fmt .Printf ("Uploaded File: %+v\n " , handler .Filename )
34- fmt .Printf ("File Size: %+v\n " , handler .Size )
35- fmt .Printf ("MIME Header: %+v\n " , handler .Header )
3631
3732 folder := filepath .Join (controller .explorerRoot , pathQueryParam )
38- path := filepath .Join (folder , handler .Filename )
3933
40- diskFile , err := os .OpenFile (path , os .O_WRONLY | os .O_CREATE , filePermissions )
41- if err != nil {
42- message := fmt .Sprintf ("Failed to retrieve file: \n %v" , err )
43- w .Error (message , http .StatusInternalServerError )
44- return
45- }
46- defer helpers .CloseSafely (diskFile )
34+ for _ , handler := range files {
35+ formFile , err := handler .Open ()
36+ if err != nil {
37+ message := fmt .Sprintf ("Failed to retrieve file: \n %v" , err )
38+ w .Error (message , http .StatusInternalServerError )
39+ }
4740
48- _ , err = io .Copy (diskFile , formFile )
49- if err != nil {
50- message := fmt .Sprintf ("Failed to save file: \n %v" , err )
51- w .Error (message , http .StatusInternalServerError )
52- return
41+ fmt .Printf ("Uploaded File: %+v\n " , handler .Filename )
42+ fmt .Printf ("File Size: %+v\n " , handler .Size )
43+ fmt .Printf ("MIME Header: %+v\n " , handler .Header )
44+
45+ path := filepath .Join (folder , handler .Filename )
46+
47+ diskFile , err := os .OpenFile (path , os .O_WRONLY | os .O_CREATE , filePermissions )
48+ if err != nil {
49+ message := fmt .Sprintf ("Failed to retrieve file: \n %v" , err )
50+ myLog .Error .Logf (message )
51+ renderExplorer (w , folder , pathQueryParam , message )
52+ return
53+ }
54+
55+ _ , err = io .Copy (diskFile , formFile )
56+ if err != nil {
57+ message := fmt .Sprintf ("Failed to save file: \n %v" , err )
58+ myLog .Error .Logf (message )
59+ renderExplorer (w , folder , pathQueryParam , message )
60+ return
61+ }
62+
63+ helpers .CloseSafely (formFile )
64+ helpers .CloseSafely (diskFile )
5365 }
5466
55- renderExplorer (w , folder , pathQueryParam , "File uploaded!" )
67+ renderExplorer (w , folder , pathQueryParam , "File(s) uploaded!" )
5668}
0 commit comments