From ac20a4ca3ab272219f25e9585c9ff41f61fdaaed Mon Sep 17 00:00:00 2001 From: Cian John Date: Sat, 20 Mar 2021 17:59:06 +0800 Subject: [PATCH] =?UTF-8?q?Feat:=20=E4=BB=8E=E6=9C=BA=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E5=A4=8D=E5=88=B6=E4=B8=8A=E4=BC=A0=E5=88=B0=E8=87=AA=E5=B7=B1?= =?UTF-8?q?=E7=9A=84=E7=AD=96=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/filesystem/upload.go | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/pkg/filesystem/upload.go b/pkg/filesystem/upload.go index 2ff8997f..41a302c7 100644 --- a/pkg/filesystem/upload.go +++ b/pkg/filesystem/upload.go @@ -2,6 +2,7 @@ package filesystem import ( "context" + "github.com/cloudreve/Cloudreve/v3/pkg/conf" "io" "os" "path" @@ -42,6 +43,26 @@ func (fs *FileSystem) Upload(ctx context.Context, file FileHeader) (err error) { } ctx = context.WithValue(ctx, fsctx.SavePathCtx, savePath) + if conf.SystemConfig.Mode == "slave" && fs.Policy.Type == "remote" && fs.Policy.ID == conf.SlaveConfig.SlaveId { + fs.Handler = &local.Driver{} + fs.Policy.Type = "remote-local" + // 生成上传策略 + policy := serializer.UploadPolicy{ + SavePath: path.Dir(savePath), + FileName: path.Base(savePath), + AutoRename: false, + MaxSize: file.GetSize(), + } + ctx = context.WithValue(ctx, fsctx.UploadPolicyCtx, policy) + + // 执行上传 + err = fs.Upload(ctx, file) + if err != nil { + return err + } + return nil + } + // 处理客户端未完成上传时,关闭连接 go fs.CancelUpload(ctx, savePath, file)