@@ -431,7 +431,7 @@ func UploadSlice(ctx context.Context, storage driver.Driver, req *reqres.UploadS
431
431
file : msu .tmpFile ,
432
432
offset : int64 (req .SliceNum ) * int64 (msu .SliceSize ),
433
433
}
434
- _ , err := io . Copy (sw , file )
434
+ _ , err := utils . CopyWithBuffer (sw , file )
435
435
436
436
if err != nil {
437
437
log .Error ("Copy error" , req , err )
@@ -516,9 +516,9 @@ func SliceUpComplete(ctx context.Context, storage driver.Driver, uploadID uint)
516
516
517
517
default :
518
518
//其他网盘客户端上传到本地后,上传到网盘,使用任务处理
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 )
522
522
return nil , err
523
523
}
524
524
var hashInfo utils.HashInfo
@@ -536,11 +536,13 @@ func SliceUpComplete(ctx context.Context, storage driver.Driver, uploadID uint)
536
536
Modified : time .Now (),
537
537
HashInfo : hashInfo ,
538
538
},
539
- Reader : fd ,
540
- Mimetype : "application/octet-stream" ,
541
- WebPutAsTask : false ,
542
539
}
540
+ file .Mimetype = utils .GetMimeType (msu .Name )
543
541
if msu .AsTask {
542
+ file .SetTmpFile (msu .tmpFile )
543
+ // 置空,避免defer中被清理
544
+ msu .tmpFile = nil
545
+ msu .TmpFile = ""
544
546
_ , err = putAsTask (ctx , msu .DstPath , file )
545
547
if err != nil {
546
548
log .Error ("putAsTask error" , msu .SliceUpload , err )
@@ -551,6 +553,7 @@ func SliceUpComplete(ctx context.Context, storage driver.Driver, uploadID uint)
551
553
UploadID : msu .ID ,
552
554
}, nil
553
555
}
556
+ file .Reader = msu .tmpFile
554
557
err = op .Put (ctx , storage , msu .ActualPath , file , nil )
555
558
if err != nil {
556
559
log .Error ("Put error" , msu .SliceUpload , err )
@@ -560,7 +563,6 @@ func SliceUpComplete(ctx context.Context, storage driver.Driver, uploadID uint)
560
563
Complete : 1 ,
561
564
UploadID : msu .ID ,
562
565
}, nil
563
-
564
566
}
565
567
566
568
}
0 commit comments