go gin上傳文件、圖片返回url


簡單記錄一下自己在用gin上傳圖片接口

在官網上有相應的簡單介紹
在這直接說
在請求方式上是POST,然后利用FormFile獲取傳值,

file,err := c.FormFile("file")
	if err != nil {
		errLog.Error(logrus.Fields{"err":err.Error(),"source":pkg.GetPath()},"controller - admin - upload")
		c.JSON(http.StatusOK,fmt.Sprintf("'%s' uploaded",file.Filename))
		return
	}

然后就是確定我們要將文件放在那個文件加下,這里是放在images文件夾下

filepath := path.Join("./"+config.BaseConf.Image.Dir,file.Filename)

限制上傳文件類型

fileExt := strings.ToLower(path.Ext(file.Filename))
if fiileExt != ".png"{
c.JSON(http.StatusOK,gin.H{"uploading":"done","message":"上傳圖片不是png格式文件",}))
	return
}

然后就是保存圖片

if err != nil {
		errLog.Error(logrus.Fields{"err":err.Error(),"source":pkg.GetPath()},"controller - admin - upload - SaveUploadedFile")
		c.JSON(http.StatusOK,err.Error())
		return
	}

最后返回,因為所需,所以返回的是url

c.JSON(http.StatusOK,gin.H{"uploading":"done","message":"success","url":"http://"+c.Request.Host+config.BaseConf.Image.Dir+file.Filename})

再返回url之前需要我們先將images文件夾變為靜態文件夾可直接訪問

r := gin.Default()
r.StaticFS("/images",http.Dir("./images"))

最后完整代碼,由於我這里是自己練習前后端沒有對上傳文件做限制就不寫了

package upload

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"github.com/sirupsen/logrus"
	"go_service/config"
	errLog "go_service/log"
	"go_service/pkg"
	"net/http"
	"path"
)

//圖片上傳
func UploadImage(c *gin.Context)  {
	file,err := c.FormFile("file")
	if err != nil {
		errLog.Error(logrus.Fields{"err":err.Error(),"source":pkg.GetPath()},"controller - admin - upload")
		c.JSON(http.StatusOK,fmt.Sprintf("'%s' uploaded",file.Filename))
		return
	}

	filepath := path.Join("./"+config.BaseConf.Image.Dir,file.Filename)
	err = c.SaveUploadedFile(file,filepath)
	if err != nil {
		errLog.Error(logrus.Fields{"err":err.Error(),"source":pkg.GetPath()},"controller - admin - upload - SaveUploadedFile")
		c.JSON(http.StatusOK,err.Error())
		return
	}
	c.JSON(http.StatusOK,gin.H{"uploading":"done","message":"success","url":"http://"+c.Request.Host+config.BaseConf.Image.Dir+file.Filename})
}

文件和圖片上傳保存沒啥區別

在內容中的log日志是自己利用logrus封裝的日志:點擊
本文連接:點擊
博主個人小博客:嘿嘿


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM