func setEntPost(c *gin.Context) {
var f Identical
bind(c,&f)
models.EtpSave(f.Copyright,"copyright")
models.EtpSave(f.Introduction,"introduction")
models.EtpSave(f.Icon,"icon")
models.EtpSave(f.Logo,"logo")
models.EtpSave(f.Version,"version")
models.EtpSave(f.Belong,"belong")
renderMessage(c,nil)
}
3.存储的数据库操作
type Etp struct {
Id int `json:"id"`
Ckey string `json:"ckey"`
Cval string `json:"cval"`
Kind int `json:"kind"`
}
func EtpSave(cval, ckey string) error {
var obj Etp
//数据库是否存在
has,err := DB["rdb"].Table("configs").Where("ckey=?",ckey).Get(&obj)
if err != nil{
return err
}
//不存在
if !has {
_, err = DB["rdb"].Table("configs").Where("ckey=?",ckey).Insert(Etp{
Ckey: ckey,
Cval: cval,
Kind: 1,
})
}else{
obj.Cval = cval
DB["rdb"].Table("configs").Where("ckey=?",ckey).Cols("cval").Update(&obj)
}
return err
}
4.优化
若上传图片稍大,在转存MySQL时会报错。Data too long for column '......' at row 1
解决方法
将数据库字段格式设置为longtext 总结
本需求主要难点在于对于golang核心库方法的掌握,包括上传文件,[]bytes 和 string之间的转换。
整体框架:
一、接收文件/图片接口
二、修改/保存图片的接口
三、保存数据的方法