@@ -513,7 +513,7 @@ func (s *ObjectService) DeleteMulti(ctx context.Context, opt *ObjectDeleteMultiO
513513type Object struct {
514514 Key string `xml:",omitempty"`
515515 ETag string `xml:",omitempty"`
516- Size int `xml:",omitempty"`
516+ Size int64 `xml:",omitempty"`
517517 PartNumber int `xml:",omitempty"`
518518 LastModified string `xml:",omitempty"`
519519 StorageClass string `xml:",omitempty"`
@@ -836,35 +836,43 @@ func (s *ObjectService) Upload(ctx context.Context, name string, filepath string
836836 }()
837837
838838 // 5.Recv the resp etag to complete
839+ err = nil
839840 for i := 0 ; i < partNum ; i ++ {
840841 if chunks [i ].Done {
841842 optcom .Parts = append (optcom .Parts , Object {
842843 PartNumber : chunks [i ].Number , ETag : chunks [i ].ETag },
843844 )
844- consumedBytes += chunks [i ].Size
845- event = newProgressEvent (ProgressDataEvent , chunks [i ].Size , consumedBytes , totalBytes )
846- progressCallback (listener , event )
845+ if err == nil {
846+ consumedBytes += chunks [i ].Size
847+ event = newProgressEvent (ProgressDataEvent , chunks [i ].Size , consumedBytes , totalBytes )
848+ progressCallback (listener , event )
849+ }
847850 continue
848851 }
849852 res := <- chresults
850853 // Notice one part fail can not get the etag according.
851854 if res .Resp == nil || res .err != nil {
852855 // Some part already fail, can not to get the header inside.
853- err := fmt .Errorf ("UploadID %s, part %d failed to get resp content. error: %s" , uploadID , res .PartNumber , res .err .Error ())
854- event = newProgressEvent (ProgressFailedEvent , 0 , consumedBytes , totalBytes , err )
855- progressCallback (listener , event )
856- return nil , nil , err
856+ err = fmt .Errorf ("UploadID %s, part %d failed to get resp content. error: %s" , uploadID , res .PartNumber , res .err .Error ())
857+ continue
857858 }
858859 // Notice one part fail can not get the etag according.
859860 etag := res .Resp .Header .Get ("ETag" )
860861 optcom .Parts = append (optcom .Parts , Object {
861862 PartNumber : res .PartNumber , ETag : etag },
862863 )
863- consumedBytes += chunks [res .PartNumber - 1 ].Size
864- event = newProgressEvent (ProgressDataEvent , chunks [res .PartNumber - 1 ].Size , consumedBytes , totalBytes )
865- progressCallback (listener , event )
864+ if err == nil {
865+ consumedBytes += chunks [res .PartNumber - 1 ].Size
866+ event = newProgressEvent (ProgressDataEvent , chunks [res .PartNumber - 1 ].Size , consumedBytes , totalBytes )
867+ progressCallback (listener , event )
868+ }
866869 }
867870 close (chresults )
871+ if err != nil {
872+ event = newProgressEvent (ProgressFailedEvent , 0 , consumedBytes , totalBytes , err )
873+ progressCallback (listener , event )
874+ return nil , nil , err
875+ }
868876 sort .Sort (ObjectList (optcom .Parts ))
869877
870878 event = newProgressEvent (ProgressCompletedEvent , 0 , consumedBytes , totalBytes )
0 commit comments