您的位置:首页 > 编程语言 > Go语言

beego上传图片报错及postman测试带有文件的post请求

2019-02-21 17:04 381 查看

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)
}

先就这样~~
看到别嘲笑我 反正我也不认识你
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: