1. 程式人生 > 實用技巧 >[Go]GO語言實戰專案-gin框架上傳圖片檔案

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

案例可以直接點選本頁面的,線上交流按鈕,體驗上傳圖片部分的功能