// Head 上传头像 func (m *ProfileController) Head() { admin := models.Admin{Account: m.userName} o := orm.NewOrm() if err := o.Read(&admin, "Account"); err != nil { m.error(err.Error()) } if m.Ctx.Request.Method == "POST" { fmt.Printf("upload head...\n") file, handler, err := m.GetFile("head") defer file.Close() if err != nil { m.Data["head_errmsg"] = "上传文件错误: " + err.Error() } else { if fileSize, ok := file.(Size); ok { size := float64(fileSize.Size()) / (1024 * 1024) fmt.Printf("filesize = %fMB\n", toolkit.Round(size, 3)) // if size > 5 { // m.Data["head_errmsg"] = "上传文件错误: 文件大小超出5M" // } else { // 能够获取到正确的文件,保存该文件 fmt.Printf("filename = %s\n", handler.Filename) _, fileSuffix := toolkit.SplitFileNameAndSuffix(handler.Filename) fileName := toolkit.GenUID() + fileSuffix savePath := filepath.Join(beego.AppConfig.String("headpath"), fileName) fmt.Printf("filepath = %s\n", savePath) // 保存文件时需要相对路径,即 ./static/upload/head/ err = m.SaveToFile("head", filepath.Join(".", savePath)) if err != nil { m.Data["head_errmsg"] = "上传文件错误: " + err.Error() } else { admin.Head = fileName if num, err := o.Update(&admin, "head"); err == nil { if num > 0 { m.Data["head_result"] = true } else { m.Data["head_errmsg"] = "上传文件错误: 服务器保存文件失败" } } else { m.Data["profile_errmsg"] = "上传文件错误: 服务器保存文件失败" } } // } } else { m.Data["head_errmsg"] = "获取上传文件错误: 无法获取文件大小" } } } format := admin.LastTime.Format("2006-01-02 15:04:05") m.Data["time"] = format m.Data["head"] = beego.AppConfig.String("headpath") + "/" + admin.Head m.Data["admin"] = admin m.display("profile") }