From f9e8b4f124928ca8e9ef264e1a75c092dd2d4cc0 Mon Sep 17 00:00:00 2001 From: astaxie Date: Tue, 9 Apr 2013 21:49:17 +0800 Subject: [PATCH] fix multipart & add three useful function c.GetString() c. GetInt() c.GetBool() --- beego.go | 7 +++++++ controller.go | 19 ++++++++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/beego.go b/beego.go index f8f89ac7..0b37a80b 100644 --- a/beego.go +++ b/beego.go @@ -35,6 +35,7 @@ var ( SessionGCMaxLifetime int64 // session's gc maxlifetime SessionSavePath string // session savepath if use mysql/redis/file this set to the connectinfo UseFcgi bool + MaxMemory int64 GlobalSessions *session.Manager //GlobalSessions ) @@ -62,6 +63,7 @@ func init() { SessionGCMaxLifetime = 3600 SessionSavePath = "" UseFcgi = false + MaxMemory = 1 << 26 //64MB } else { HttpAddr = AppConfig.String("httpaddr") if v, err := AppConfig.Int("httpport"); err != nil { @@ -69,6 +71,11 @@ func init() { } else { HttpPort = v } + if v, err := AppConfig.Int64("maxmemory"); err != nil { + MaxMemory = 1 << 26 + } else { + MaxMemory = v + } AppName = AppConfig.String("appname") if runmode := AppConfig.String("runmode"); runmode != "" { RunMode = runmode diff --git a/controller.go b/controller.go index 30580160..65ff92d4 100644 --- a/controller.go +++ b/controller.go @@ -170,10 +170,27 @@ func (c *Controller) ServeXml() { } func (c *Controller) Input() url.Values { - c.Ctx.Request.ParseForm() + ct := c.Ctx.Request.Header.Get("Content-Type") + if ct == "multipart/form-data" { + c.Ctx.Request.ParseMultipartForm(MaxMemory) //64MB + } else { + c.Ctx.Request.ParseForm() + } return c.Ctx.Request.Form } +func (c *Controller) GetString(key string) string { + return c.Input().Get(key) +} + +func (c *Controller) GetInt(key string) (int64, error) { + return strconv.ParseInt(c.Input().Get(key), 10, 64) +} + +func (c *Controller) GetBool(key string) (bool, error) { + return strconv.ParseBool(c.Input().Get(key)) +} + func (c *Controller) StartSession() (sess session.SessionStore) { sess = GlobalSessions.SessionStart(c.Ctx.ResponseWriter, c.Ctx.Request) return