go gin上传文件、图片返回url

4 篇文章 0 订阅

简单记录一下自己在用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封装的日志:点击
本文连接:点击
博主个人小博客:嘿嘿

  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值