[Go]GO语言实战项目-gin框架上传图片文件

在做gofly客服的上传图片部分时,需要在gin框架中实现上传图片,并且限制文件的后缀

上传文件在gin中比较简单,就是在http处理函数里面调用c.SaveUploadedFile()就可以了

 

需要实现限制文件后缀,自动创建按照月份的上传目录,生成新的文件名字避免冲突被覆盖

完整代码如下 ,上传目录为static/upload/2020August/xxxxxxx.xxx

复制代码
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,
            },
        })
    }
}
复制代码
    //上传文件
    engine.POST("/uploadimg",controller.UploadImg)

案例可以直接点击本页面的,在线交流按钮,体验上传图片部分的功能

 

 

posted @   唯一客服系统开发笔记  阅读(3654)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2018-08-26 [PHP] 算法-两个n位的二进制整数相加问题PHP实现
点击右上角即可分享
微信分享提示
1
chat with us