@@ -533,18 +533,19 @@ func (d *Yun139) Put(ctx context.Context, dstDir model.Obj, stream model.FileStr
533533 }
534534 }
535535
536- partInfos := []PartInfo {}
537- var partSize = d .getPartSize (stream .GetSize ())
538- part := (stream .GetSize () + partSize - 1 ) / partSize
539- if part == 0 {
540- part = 1
541- }
542- for i := int64 (0 ); i < part ; i ++ {
536+ size := stream .GetSize ()
537+ var partSize = d .getPartSize (size )
538+ part := size / partSize
539+ if size % partSize > 0 {
540+ part ++
541+ }
542+ partInfos := make ([]PartInfo , 0 , part )
543+ for i := range part {
543544 if utils .IsCanceled (ctx ) {
544545 return ctx .Err ()
545546 }
546547 start := i * partSize
547- byteSize := stream . GetSize () - start
548+ byteSize := size - start
548549 if byteSize > partSize {
549550 byteSize = partSize
550551 }
@@ -572,7 +573,7 @@ func (d *Yun139) Put(ctx context.Context, dstDir model.Obj, stream model.FileStr
572573 "contentType" : "application/octet-stream" ,
573574 "parallelUpload" : false ,
574575 "partInfos" : firstPartInfos ,
575- "size" : stream . GetSize () ,
576+ "size" : size ,
576577 "parentFileId" : dstDir .GetID (),
577578 "name" : stream .GetName (),
578579 "type" : "file" ,
@@ -625,7 +626,7 @@ func (d *Yun139) Put(ctx context.Context, dstDir model.Obj, stream model.FileStr
625626 }
626627
627628 // Progress
628- p := driver .NewProgress (stream . GetSize () , up )
629+ p := driver .NewProgress (size , up )
629630
630631 rateLimited := driver .NewLimitedUploadStream (ctx , stream )
631632 // 上传所有分片
@@ -776,22 +777,22 @@ func (d *Yun139) Put(ctx context.Context, dstDir model.Obj, stream model.FileStr
776777 return err
777778 }
778779
779- // Progress
780- p := driver .NewProgress (stream .GetSize (), up )
781-
782- var partSize = d .getPartSize (stream .GetSize ())
783- part := (stream .GetSize () + partSize - 1 ) / partSize
784- if part == 0 {
785- part = 1
780+ size := stream .GetSize ()
781+ var partSize = d .getPartSize (size )
782+ part := size / partSize
783+ if size % partSize > 0 {
784+ part ++
786785 }
786+ // Progress
787+ p := driver .NewProgress (size , up )
787788 rateLimited := driver .NewLimitedUploadStream (ctx , stream )
788- for i := int64 ( 0 ); i < part ; i ++ {
789+ for i := range part {
789790 if utils .IsCanceled (ctx ) {
790791 return ctx .Err ()
791792 }
792793
793794 start := i * partSize
794- byteSize := stream . GetSize () - start
795+ byteSize := size - start
795796 if byteSize > partSize {
796797 byteSize = partSize
797798 }
@@ -806,7 +807,7 @@ func (d *Yun139) Put(ctx context.Context, dstDir model.Obj, stream model.FileStr
806807
807808 req = req .WithContext (ctx )
808809 req .Header .Set ("Content-Type" , "text/plain;name=" + unicode (stream .GetName ()))
809- req .Header .Set ("contentSize" , strconv .FormatInt (stream . GetSize () , 10 ))
810+ req .Header .Set ("contentSize" , strconv .FormatInt (size , 10 ))
810811 req .Header .Set ("range" , fmt .Sprintf ("bytes=%d-%d" , start , start + byteSize - 1 ))
811812 req .Header .Set ("uploadtaskID" , resp .Data .UploadResult .UploadTaskID )
812813 req .Header .Set ("rangeType" , "0" )
0 commit comments