From 4c523830a7a142c5c7392ad13940989bbc33c7d3 Mon Sep 17 00:00:00 2001 From: AllenX2018 Date: Mon, 11 Jan 2021 16:41:48 +0800 Subject: [PATCH] add SaveToFileWithBuffer --- server/web/controller.go | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/server/web/controller.go b/server/web/controller.go index ef6ba27b..18a7b002 100644 --- a/server/web/controller.go +++ b/server/web/controller.go @@ -29,10 +29,9 @@ import ( "strconv" "strings" - "github.com/beego/beego/v2/server/web/session" - "github.com/beego/beego/v2/server/web/context" "github.com/beego/beego/v2/server/web/context/param" + "github.com/beego/beego/v2/server/web/session" ) var ( @@ -622,6 +621,26 @@ func (c *Controller) SaveToFile(fromFile, toFile string) error { return err } +type onlyWriter struct { + io.Writer +} + +func (c *Controller) SaveToFileWithBuffer(fromFile string, toFile string, buf []byte) error { + src, _, err := c.Ctx.Request.FormFile(fromFile) + if err != nil { + return err + } + defer src.Close() + + dst, err := os.OpenFile(toFile, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666) + if err != nil { + return err + } + + _, err = io.CopyBuffer(onlyWriter{dst}, src, buf) + return err +} + // StartSession starts session and load old session data info this controller. func (c *Controller) StartSession() session.Store { if c.CruSession == nil {