beego項(xiàng)目實(shí)戰(zhàn)——文件上傳

上一篇完成了用戶的登錄注冊(cè)和登錄態(tài)校驗(yàn),這次開始做數(shù)據(jù)上傳的部分,先做文件上傳
文件上傳主要包括文件的上傳存儲(chǔ),數(shù)據(jù)庫(kù)記錄數(shù)據(jù)

model

到文件這塊就變成了典型的restful接口了,就可以使用beego提供的一些腳手架來(lái)快速編寫代碼
bee generate model [modelname] [-fields=""]這個(gè)命令可以創(chuàng)建增刪查改的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)"` 代表著外鍵多對(duì)一

controller

bee generate controller [controllerfile]這個(gè)命令可以創(chuàng)建restful的controller

 // @Title Post
// @Description 上傳文件接口
// @Param   name        formData    string  true        "上傳文件名"
// @Param   file        formData    file    true        "上傳的文件"
// @Success 200 {int} file的ID
// @Failure 400 用戶錯(cuò)誤
// @Failure 500 服務(wù)端錯(cuò)誤
// @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)
    //文件存儲(chǔ)失敗
    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))存儲(chǔ)文件
用文件名搜索,沒有搜索到就新建一條記錄,搜索到了就修改記錄的日期

效果

文件上傳
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 作者:徐志摩 昨天我瓶子里斜插著的桃花 是朵朵媚笑在美人的腮邊掛; 今兒它們?nèi)土祟^,全變...
    閱讀君閱讀 166評(píng)論 0 2
  • 一個(gè)人沒有鐵布衫,金剛心,刀槍不入之魂,真的不要做明星。因?yàn)?,你?huì)承受比自己錯(cuò)誤要狠10000倍的攻擊。 早上在今...
    象浦閱讀 528評(píng)論 3 15
  • 我是從今年4月13號(hào)開始減肥的,身高163,減肥前132,減肥后106,已經(jīng)維持這樣的狀態(tài)兩個(gè)月了,沒有反彈...
    花豆小壯閱讀 356評(píng)論 0 0
  • 看了陳凱歌《妖貓傳》中的楊玉環(huán)后,心中深感以前看的楊玉環(huán)都是白看了,美則美矣,卻總擔(dān)不起盛世下楊貴妃之名,這一次,...
    解語(yǔ)師閱讀 711評(píng)論 2 1
  • 姓名:李俊秀 公司:寧波大發(fā)化纖有限公司 期數(shù):六項(xiàng)精進(jìn)259期學(xué)員 組別:感謝一組 【日精進(jìn)打卡第107天】 【...
    花語(yǔ)花香9閱讀 129評(píng)論 0 0

友情鏈接更多精彩內(nèi)容