@@ -431,7 +431,7 @@ func UploadSlice(ctx context.Context, storage driver.Driver, req *reqres.UploadS
431431 file : msu .tmpFile ,
432432 offset : int64 (req .SliceNum ) * int64 (msu .SliceSize ),
433433 }
434- _ , err := io . Copy (sw , file )
434+ _ , err := utils . CopyWithBuffer (sw , file )
435435
436436 if err != nil {
437437 log .Error ("Copy error" , req , err )
@@ -516,9 +516,9 @@ func SliceUpComplete(ctx context.Context, storage driver.Driver, uploadID uint)
516516
517517 default :
518518 //其他网盘客户端上传到本地后,上传到网盘,使用任务处理
519- fd , err := os . Open ( msu . TmpFile )
520- if err != nil {
521- log .Error ("Open error" , msu . TmpFile , err )
519+ if msu . tmpFile == nil {
520+ err := fmt . Errorf ( "tmp file not found [%d]" , uploadID )
521+ log .Error (err )
522522 return nil , err
523523 }
524524 var hashInfo utils.HashInfo
@@ -536,11 +536,13 @@ func SliceUpComplete(ctx context.Context, storage driver.Driver, uploadID uint)
536536 Modified : time .Now (),
537537 HashInfo : hashInfo ,
538538 },
539- Reader : fd ,
540- Mimetype : "application/octet-stream" ,
541- WebPutAsTask : false ,
542539 }
540+ file .Mimetype = utils .GetMimeType (msu .Name )
543541 if msu .AsTask {
542+ file .SetTmpFile (msu .tmpFile )
543+ // 置空,避免defer中被清理
544+ msu .tmpFile = nil
545+ msu .TmpFile = ""
544546 _ , err = putAsTask (ctx , msu .DstPath , file )
545547 if err != nil {
546548 log .Error ("putAsTask error" , msu .SliceUpload , err )
@@ -551,6 +553,7 @@ func SliceUpComplete(ctx context.Context, storage driver.Driver, uploadID uint)
551553 UploadID : msu .ID ,
552554 }, nil
553555 }
556+ file .Reader = msu .tmpFile
554557 err = op .Put (ctx , storage , msu .ActualPath , file , nil )
555558 if err != nil {
556559 log .Error ("Put error" , msu .SliceUpload , err )
@@ -560,7 +563,6 @@ func SliceUpComplete(ctx context.Context, storage driver.Driver, uploadID uint)
560563 Complete : 1 ,
561564 UploadID : msu .ID ,
562565 }, nil
563-
564566 }
565567
566568}
0 commit comments