From 9e226ae5926063169936b528e3197bded0443a10 Mon Sep 17 00:00:00 2001 From: krau <71133316+krau@users.noreply.github.com> Date: Sat, 9 Nov 2024 13:18:22 +0800 Subject: [PATCH] refactor(webdav): use write stream to upload file --- storage/webdav/webdav.go | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/storage/webdav/webdav.go b/storage/webdav/webdav.go index e7dc7a1..2fbe4f1 100644 --- a/storage/webdav/webdav.go +++ b/storage/webdav/webdav.go @@ -4,6 +4,7 @@ import ( "context" "errors" "os" + "path" "path/filepath" "strings" "time" @@ -32,17 +33,19 @@ func (w *Webdav) Init() { } func (w *Webdav) Save(ctx context.Context, filePath, storagePath string) error { - storagePath = basePath + "/" + storagePath + storagePath = path.Join(basePath, storagePath) if err := Client.MkdirAll(filepath.Dir(storagePath), os.ModePerm); err != nil { logger.L.Errorf("Failed to create directory %s: %v", filepath.Dir(storagePath), err) return errors.New("webdav: failed to create directory") } - fileBytes, err := os.ReadFile(filePath) + file, err := os.Open(filePath) if err != nil { - logger.L.Errorf("Failed to read file %s: %v", filePath, err) + logger.L.Errorf("Failed to open file %s: %v", filePath, err) return err } - if err := Client.Write(storagePath, fileBytes, os.ModePerm); err != nil { + defer file.Close() + + if err := Client.WriteStream(storagePath, file, os.ModePerm); err != nil { logger.L.Errorf("Failed to write file %s: %v", storagePath, err) return errors.New("webdav: failed to write file") }