@@ -5,17 +5,19 @@ import (
55 "encoding/base64"
66 "encoding/xml"
77 "fmt"
8- "github.com/skip2/go-qrcode"
98 "io"
109 "net/http"
1110 "strconv"
1211 "strings"
1312 "time"
1413
14+ "github.com/skip2/go-qrcode"
15+
1516 "github.com/OpenListTeam/OpenList/v4/drivers/base"
1617 "github.com/OpenListTeam/OpenList/v4/internal/driver"
1718 "github.com/OpenListTeam/OpenList/v4/internal/model"
1819 "github.com/OpenListTeam/OpenList/v4/internal/op"
20+ "github.com/OpenListTeam/OpenList/v4/internal/stream"
1921 "github.com/OpenListTeam/OpenList/v4/pkg/utils"
2022
2123 "github.com/go-resty/resty/v2"
@@ -311,11 +313,14 @@ func (y *Cloud189TV) RapidUpload(ctx context.Context, dstDir model.Obj, stream m
311313
312314// 旧版本上传,家庭云不支持覆盖
313315func (y * Cloud189TV ) OldUpload (ctx context.Context , dstDir model.Obj , file model.FileStreamer , up driver.UpdateProgress , isFamily bool , overwrite bool ) (model.Obj , error ) {
314- tempFile , err := file .CacheFullInTempFile ()
315- if err != nil {
316- return nil , err
316+ fileMd5 := file .GetHash ().GetHash (utils .MD5 )
317+ var tempFile = file .GetFile ()
318+ var err error
319+ if len (fileMd5 ) != utils .MD5 .Width {
320+ tempFile , fileMd5 , err = stream .CacheFullAndHash (file , & up , utils .MD5 )
321+ } else if tempFile == nil {
322+ tempFile , err = file .CacheFullAndWriter (& up , nil )
317323 }
318- fileMd5 , err := utils .HashFile (utils .MD5 , tempFile )
319324 if err != nil {
320325 return nil , err
321326 }
@@ -345,7 +350,7 @@ func (y *Cloud189TV) OldUpload(ctx context.Context, dstDir model.Obj, file model
345350 header ["Edrive-UploadFileId" ] = fmt .Sprint (status .UploadFileId )
346351 }
347352
348- _ , err := y .put (ctx , status .FileUploadUrl , header , true , io . NopCloser ( tempFile ) , isFamily )
353+ _ , err := y .put (ctx , status .FileUploadUrl , header , true , tempFile , isFamily )
349354 if err , ok := err .(* RespErr ); ok && err .Code != "InputStreamReadError" {
350355 return nil , err
351356 }
0 commit comments