@@ -220,13 +220,13 @@ func (elf *ElFinderConnector) mkDir() {
220220 v := elf .getVolume (IDAndTarget [0 ])
221221 path , err := elf .parseTarget (strings .Join (IDAndTarget [1 :], "_" ))
222222 if err != nil {
223- elf .res .Error = []string {errMkdir , elf .req .Name }
223+ elf .res .Error = []string {errMkdir , elf .req .Name , err . Error () }
224224 return
225225 }
226226 if elf .req .Name != "" {
227227 fileDir , err := v .MakeDir (path , elf .req .Name )
228228 if err != nil {
229- elf .res .Error = []string {errMkdir , elf .req .Name }
229+ elf .res .Error = []string {errMkdir , elf .req .Name , err . Error () }
230230 return
231231 }
232232 added = append (added , fileDir )
@@ -235,7 +235,7 @@ func (elf *ElFinderConnector) mkDir() {
235235 for _ , name := range elf .req .Dirs {
236236 fileDir , err := v .MakeDir (path , name )
237237 if err != nil {
238- elf .res .Error = []string {errMkdir , elf .req .Name }
238+ elf .res .Error = []string {errMkdir , elf .req .Name , err . Error () }
239239 break
240240 }
241241 added = append (added , fileDir )
@@ -251,12 +251,12 @@ func (elf *ElFinderConnector) mkFile() {
251251 v := elf .getVolume (IDAndTarget [0 ])
252252 path , err := elf .parseTarget (strings .Join (IDAndTarget [1 :], "_" ))
253253 if err != nil {
254- elf .res .Error = []string {"errMkfile" , elf .req .Name }
254+ elf .res .Error = []string {"errMkfile" , elf .req .Name , err . Error () }
255255 return
256256 }
257257 fileDir , err := v .MakeFile (path , elf .req .Name )
258258 if err != nil {
259- elf .res .Error = []string {"errMkfile" , elf .req .Name }
259+ elf .res .Error = []string {"errMkfile" , elf .req .Name , err . Error () }
260260 return
261261 }
262262 elf .res .Added = []FileDir {fileDir }
@@ -486,8 +486,15 @@ func (elf *ElFinderConnector) dispatch(rw http.ResponseWriter, req *http.Request
486486 elf .tree ()
487487 case "file" :
488488 readFile , filename , err := elf .file ()
489+ if req .Form .Get ("cpath" ) != "" {
490+ http .SetCookie (rw , & http.Cookie {Path : req .Form .Get ("cpath" ), Name : "elfdl" + req .Form .Get ("reqid" ), Value : "1" })
491+ }
489492 if err != nil {
493+ log .Printf ("Download file err: %s" , err )
490494 elf .res .Error = err .Error ()
495+ rw .WriteHeader (403 )
496+ _ , _ = rw .Write ([]byte (err .Error ()))
497+ return
491498 } else {
492499 mimeType := mime .TypeByExtension (filepath .Ext (filename ))
493500 rw .Header ().Set ("Content-Type" , mimeType )
@@ -496,12 +503,9 @@ func (elf *ElFinderConnector) dispatch(rw http.ResponseWriter, req *http.Request
496503 } else {
497504 rw .Header ().Set ("Content-Disposition" , fmt .Sprintf (`inline; filename=="%s"` , filename ))
498505 }
499- if req .Form .Get ("cpath" ) != "" {
500- http .SetCookie (rw , & http.Cookie {Path : req .Form .Get ("cpath" ), Name : "elfdl" + req .Form .Get ("reqid" ), Value : "1" })
501- }
502506 _ , err := io .Copy (rw , readFile )
507+ defer readFile .Close ()
503508 if err == nil {
504- _ = readFile .Close ()
505509 log .Printf ("download file %s successful" , filename )
506510 return
507511 } else {
@@ -541,26 +545,29 @@ func (elf *ElFinderConnector) dispatch(rw http.ResponseWriter, req *http.Request
541545 files := req .MultipartForm .File ["upload[]" ]
542546 added := make ([]FileDir , 0 , len (files ))
543547 errs := make ([]string , 0 , len (files ))
548+ if len (errs ) == 0 {
549+ errs = append (errs , errUploadFile )
550+ }
544551 if elf .req .Cid != 0 && elf .req .Chunk != "" {
545552 re , err := regexp .Compile (`(.*?)\.([0-9][0-9]*?_[0-9][0-9]*?)(\.part)` )
546553 if err != nil {
547- elf . res . Error = errFolderUpload
554+ errs = append ( errs , err . Error ())
548555 break
549556 }
550557 ch := re .FindStringSubmatch (elf .req .Chunk )
551558 if len (ch ) != 4 {
552- elf . res . Error = errUploadFile
559+ errs = append ( errs , err . Error ())
553560 break
554561 }
555562 t := strings .Split (ch [2 ], "_" )
556563 currentPart , err := strconv .Atoi (t [0 ])
557564 if err != nil {
558- elf . res . Error = errUploadFile
565+ errs = append ( errs , err . Error ())
559566 break
560567 }
561568 totalPart , err := strconv .Atoi (t [1 ])
562569 if err != nil {
563- elf . res . Error = errUploadFile
570+ errs = append ( errs , err . Error ())
564571 break
565572 }
566573 rangeData := strings .Split (elf .req .Range , "," )
@@ -570,17 +577,17 @@ func (elf *ElFinderConnector) dispatch(rw http.ResponseWriter, req *http.Request
570577 }
571578 offSet , err := strconv .Atoi (rangeData [0 ])
572579 if err != nil {
573- elf . res . Error = errUploadFile
580+ errs = append ( errs , err . Error ())
574581 break
575582 }
576583 chunkLength , err := strconv .Atoi (rangeData [1 ])
577584 if err != nil {
578- elf . res . Error = errUploadFile
585+ errs = append ( errs , err . Error ())
579586 break
580587 }
581588 totalSize , err := strconv .Atoi (rangeData [2 ])
582589 if err != nil {
583- elf . res . Error = errUploadFile
590+ errs = append ( errs , err . Error ())
584591 break
585592 }
586593 filename := ch [1 ]
@@ -609,12 +616,12 @@ func (elf *ElFinderConnector) dispatch(rw http.ResponseWriter, req *http.Request
609616 // Chunk merge request
610617 re , err := regexp .Compile (`([0-9]*)_([0-9]*)_(.*)` )
611618 if err != nil {
612- elf . res . Error = errFolderUpload
619+ errs = append ( errs , err . Error ())
613620 break
614621 }
615622 ch := re .FindStringSubmatch (elf .req .Chunk )
616623 if len (ch ) != 4 {
617- elf . res . Error = errFolderUpload
624+ errs = append ( errs , err . Error ())
618625 break
619626 }
620627 var uploadPath string
@@ -639,14 +646,16 @@ func (elf *ElFinderConnector) dispatch(rw http.ResponseWriter, req *http.Request
639646 }
640647 result , err := v .UploadFile (dirpath , uploadPath , uploadFile .Filename , f )
641648 if err != nil {
642- errs = append (errs , "errUpload" )
649+ errs = append (errs , err . Error () )
643650 continue
644651 }
645652 added = append (added , result )
646653 }
647654
648655 }
649- elf .res .Warning = errs
656+ if len (errs ) > 1 {
657+ elf .res .Warning = errs
658+ }
650659 elf .res .Added = added
651660 case "zipdl" :
652661 switch elf .req .Download {
0 commit comments