beego图片上传
第二次发表博客,作为自己学习的记录,也给像我一样的踩坑达人提供些思路hhh
我是渣渣 叫我渣工hhh
mysql 插入数据报错:Incorrect string value: ‘\xE4\xBC\x9A\xE5\x91\x98’ for column 'aimg’at row 1
beego中的orm创建数据库表时虽简便了数据库操作,但还不够完善,无法设置表的编码格式为utf-8,则会出现插入数据报以上错误,
解决办法:找到该表信息 ,改变表的编码格式为utf-8,(在初始创建数据库时,将字符集编码改为utf-8,后续使用orm建表时都是utf-8格式)
Postman测试post请求+文件上传
1.url 请求参数
2.标题头3.设置body内容(特别注意 出现错误 Handler crashed with error runtime error: invalid memory address or nil pointer dereference
检查是否key值与代码中值是否相同)
上传图片的代码
看网课敲的代码后来在接口测试中出现了很多问题。填了一个又一个坑
代码中很多内容是测试打印的,比较简陋,纯属记录==不接受批评-_-
func (c *ArticleController) HandleAdd() {
//拿到数据
artiName := c.GetString("artiName")
artiContent := c.GetString("artiContent")
//上传文件
f, h, err := c.GetFile("uploadname")
defer f.Close()
//1.限定格式
//拿到文件的后缀名
fileExt := path.Ext(h.Filename)
if fileExt != ".jpg" && fileExt != ".png" {
beego.Info("上传文件格式错误")
return
}
//2.限制大小
if h.Size > 500000 {
beego.Info("上传文件过大")
return
}
beego.Info(fileExt)
//3.对文件重命名避免重复+时间戳 2006-01-02 15:04:05 go语言诞生时间 可正常格式化时间
//随机数也可
fileName := time.Now().Format("2006-01-02 15-04-05")
beego.Info(fileName)
if err != nil {
beego.Info("上传文件失败")
return
}
// “.”必须
FN :=c.SaveToFile("uploadname", "./static/img/"+fileName+h.Filename)
beego.Info("FN",FN)
//判断数据是否合法
if artiName == "" || artiContent == "" {
beego.Info("请输入完整内容")
return
}
//插入数据
o := orm.NewOrm()
arti := models.Article{}
arti.ArtiName = artiName
arti.Acontent = artiContent
arti.Aimg = "/static/img/" + h.Filename
_, err = o.Insert(&arti)
if err != nil {
beego.Info("插入数据库失败", err)
return
} //返回文章界面
beego.Info("文章添加成功")
beego.Info(artiName, artiContent)
c.Redirect("/index", 302)
}
先就这样~~
看到别嘲笑我 反正我也不认识你