在做gofly客服的上传图片部分时,需要在gin框架中实现上传图片,并且限制文件的后缀
上传文件在gin中比较简单,就是在http处理函数里面调用c.SaveUploadedFile()就可以了
需要实现限制文件后缀,自动创建按照月份的上传目录,生成新的文件名字避免冲突被覆盖
完整代码如下 ,上传目录为static/upload/2020August/xxxxxxx.xxx
代码语言:javascript复制func UploadImg(c *gin.Context){
config:=config.CreateConfig()
f, err := c.FormFile("imgfile")
if err != nil {
c.JSON(200, gin.H{
"code": 400,
"msg": "上传失败!",
})
return
} else {
fileExt:=strings.ToLower(path.Ext(f.Filename))
if fileExt!=".png"&&fileExt!=".jpg"&&fileExt!=".gif"&&fileExt!=".jpeg"{
c.JSON(200, gin.H{
"code": 400,
"msg": "上传失败!只允许png,jpg,gif,jpeg文件",
})
return
}
fileName:=tools.Md5(fmt.Sprintf("%s%s",f.Filename,time.Now().String()))
fildDir:=fmt.Sprintf("%s%d%s/",config.Upload,time.Now().Year(),time.Now().Month().String())
isExist,_:=tools.IsFileExist(fildDir)
if !isExist{
os.Mkdir(fildDir,os.ModePerm)
}
filepath:=fmt.Sprintf("%s%s%s",fildDir,fileName,fileExt)
c.SaveUploadedFile(f, filepath)
c.JSON(200, gin.H{
"code": 200,
"msg": "上传成功!",
"result":gin.H{
"path":filepath,
},
})
}
}
代码语言:javascript复制 //上传文件
engine.POST("/uploadimg",controller.UploadImg)
案例可以直接点击本页面的,在线交流按钮,体验上传图片部分的功能