关于EasyNVR中宣传位的设定,大家可以翻阅以前的博文了解一下(登录页如何实现插入产品广告位),宣传位的图片都是可以自由上传删减的。
我们在测试宣传位上传功能的时候,后台报错"Op":“open”,“Path”:XXXXXX。
这个报错信息提示是没法打开advert/images这个路径,有了之前问题的排查经验,我们可以从初始化数据库的地方入手,排查后果然发现是因为程序初始化时没有该文件夹,程序里没有判断这个文件夹存在或否,于是就出现了上述报错。
因此我们在以下代码处先判断文件夹是否存在,不存在就创建文件夹,这样就解决了上传宣传位图片报错。参考代码如下:
/**
新增广告图片
*/
func AddAdvert(c *gin.Context) {
var advert models.Advert
if err := c.ShouldBind(&advert); err != nil {
c.AbortWithStatusJSON(400, err.Error())
return
}
file, err := c.FormFile("file")
if err != nil {
c.AbortWithStatusJSON(400, err.Error())
return
}
fileName := file.Filename
index := strings.LastIndex(fileName, ".")
str := fileName[0:index]
//名字经md5加密防止名字相同
name := utils.MD5(str) + fileName[index:]
advert.Name = name
advert.AdvertUrl = "/advert/" + name
var dest = ""
if runtime.GOARCH == "arm" {
dest = filepath.Join(utils.ExcelDataDir())
} else {
dest = filepath.Join(utils.AdvertDir(), fmt.Sprintf("%s", name))
}
err = c.SaveUploadedFile(file, dest)
if err != nil {
fmt.Errorf("保存上传文件错误, %v", err)
c.AbortWithStatusJSON(400, err)
return
}
models.DB.Save(&advert)
c.JSON(200, gin.H{
"advert": advert,
})
}
解决效果:
上传宣传位图片成功。如果大家对EasyNVR视频平台还有疑问,欢迎大家进入我们演示平台观看预览,此外,TSINGSEE青犀视频云边端架构产品均可提供试用版本给大家测试,方便大家实际操作及开发。
EasyNVR视频平台播放界面如下,欢迎访问: