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

第二次发表博客,作为自己学习的记录,也给像我一样的踩坑达人提供些思路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 请求参数
postman
2.标题头标题头3.设置body内容(特别注意 出现错误 Handler crashed with error runtime error: invalid memory address or nil pointer dereference
检查是否key值与代码中值是否相同)
在这里插入图片描述在这里插入图片描述
设置body内容

上传图片的代码

看网课敲的代码后来在接口测试中出现了很多问题。填了一个又一个坑
代码中很多内容是测试打印的,比较简陋,纯属记录==不接受批评-_-


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

先就这样~~
看到别嘲笑我 反正我也不认识你
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值