• [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)

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

  • 相关阅读:
    面试题--十进制转换成2进制
    c++基础--如何将函数作为参数传递
    面试题--完全二叉树的的最后一层的最右节点
    数据库原理--故障恢复
    数据库原理--事务并发控制
    数据库原理--事务(一)
    数据库原理--1nf 2nf 3nf
    数据库原理--外键和主键
    数据库原理--函数依赖和范式
    人人都有极客精神
  • 原文地址:https://www.cnblogs.com/taoshihan/p/13565212.html
Copyright © 2020-2023  润新知