beego项目实战——文件上传

上一篇完成了用户的登录注册和登录态校验,这次开始做数据上传的部分,先做文件上传
文件上传主要包括文件的上传存储,数据库记录数据

model

到文件这块就变成了典型的restful接口了,就可以使用beego提供的一些脚手架来快速编写代码
bee generate model [modelname] [-fields=""]这个命令可以创建增删查改的model

type File struct {
    Id   int64
    Name string
    Time time.Time `orm:"type(datetime)"`
    User *User     `orm:"rel(fk)"`
}

func init() {
    orm.RegisterModel(new(File))
}

Time time.Time `orm:"type(datetime)"`代表着datetime类型
User *User `orm:"rel(fk)"` 代表着外键多对一

controller

bee generate controller [controllerfile]这个命令可以创建restful的controller

 // @Title Post
// @Description 上传文件接口
// @Param   name        formData    string  true        "上传文件名"
// @Param   file        formData    file    true        "上传的文件"
// @Success 200 {int} file的ID
// @Failure 400 用户错误
// @Failure 500 服务端错误
// @router / [post]
func (c *FileController) Post() {
    name := c.GetString("name")
    f, _, err := c.GetFile("file")
    defer f.Close()
    //获取文件失败
    if err != nil {
        c.Data["json"] = "获取文件失败"
        c.Abort("400")
    }
    uid := c.GetSession("uid").(int64)
    //文件存储失败
    if err = c.SaveToFile("file", fmt.Sprintf("upload/%d_%s", uid, name)); err != nil {
        c.Data["json"] = err.Error()
        c.Abort("500")
    }
    o := orm.NewOrm()
    user := models.User{Id: uid}
    file := models.File{Name: name, User: &user}
    if o.Read(&file, "Name", "User") == nil {
        file.Time = time.Now()
        _, err := o.Update(&file, "Time")
        if err != nil {
            c.Data["json"] = err.Error()
            c.Abort("500")
        }
        c.Data["json"] = file.Id
    } else {
        file.Time = time.Now()
        _, err := o.Insert(&file)
        if err != nil {
            c.Data["json"] = err.Error()
            c.Abort("500")
        }
        c.Data["json"] = file.Id
    }
    c.ServeJSON()
}

c.SaveToFile("file", fmt.Sprintf("upload/%d_%s", uid, name))存储文件
用文件名搜索,没有搜索到就新建一条记录,搜索到了就修改记录的日期

效果

文件上传
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 作者:徐志摩 昨天我瓶子里斜插着的桃花 是朵朵媚笑在美人的腮边挂; 今儿它们全低了头,全变...
    阅读君阅读 166评论 0 2
  • 一个人没有铁布衫,金刚心,刀枪不入之魂,真的不要做明星。因为,你会承受比自己错误要狠10000倍的攻击。 早上在今...
    象浦阅读 528评论 3 15
  • 我是从今年4月13号开始减肥的,身高163,减肥前132,减肥后106,已经维持这样的状态两个月了,没有反弹...
    花豆小壮阅读 349评论 0 0
  • 看了陈凯歌《妖猫传》中的杨玉环后,心中深感以前看的杨玉环都是白看了,美则美矣,却总担不起盛世下杨贵妃之名,这一次,...
    解语师阅读 711评论 2 1
  • 姓名:李俊秀 公司:宁波大发化纤有限公司 期数:六项精进259期学员 组别:感谢一组 【日精进打卡第107天】 【...
    花语花香9阅读 129评论 0 0

友情链接更多精彩内容