Golang将图片存入腾讯云对象存储COS并获取图片访问链接

准备工作

首先要开通腾讯云对象存储COS服务

 创建存储桶

 进入存储桶在概览页面获取访问

拿到自己的SecretID和SecretKey

 最后把存储桶的访问权限改为共有读私有写

使用Golang代码上传图片并返回图片访问链接

首先创建一个访问路由

package main

import (
	"github.com/gin-gonic/gin"
)

func main() {
	r := gin.Default()
	r.POST("saveImageToCos", SaveImageToCos)
	r.Run(":8081")
}
func SaveImageToCos(c *gin.Context) {

}

从请求中获取图片的数据流

package main

import (
	"github.com/gin-gonic/gin"
)

func main() {
	r := gin.Default()
	r.POST("saveImageToCos", SaveImageToCos)
	r.Run(":8081")
}
func SaveImageToCos(c *gin.Context) {
	//获取图片数据流
	file, _ := c.FormFile("image")

}

设置SecretID,SecretKey和访问域

package main

import (
	"github.com/gin-gonic/gin"
	"github.com/tencentyun/cos-go-sdk-v5"
	"net/http"
	"net/url"
)

func main() {
	r := gin.Default()
	r.POST("saveImageToCos", SaveImageToCos)
	r.Run(":8081")
}
func SaveImageToCos(c *gin.Context) {
	//获取图片数据流
	file, _ := c.FormFile("thumbnail")
	//创建cos客户端并设置SecretID,SecretKey和访问域名
	u, _ := url.Parse("这里填写自己的访问域名")
	b := &cos.BaseURL{BucketURL: u}
	a := cos.NewClient(b, &http.Client{
		Transport: &cos.AuthorizationTransport{
			SecretID:  "这里填写自己的SecretID",
			SecretKey: "这里填写自己的SecretKey",
		},
	})
}

设置在存储桶保存的地址,不存在的文件夹,cos会自动创建文件夹

package main

import (
	"github.com/gin-gonic/gin"
	"github.com/tencentyun/cos-go-sdk-v5"
	"net/http"
	"net/url"
)

func main() {
	r := gin.Default()
	r.POST("saveImageToCos", SaveImageToCos)
	r.Run(":8081")
}
func SaveImageToCos(c *gin.Context) {
	//获取图片数据流
	file, _ := c.FormFile("thumbnail")
	//创建cos客户端并设置SecretID,SecretKey和访问域名
	u, _ := url.Parse("这里填写自己的访问域名")
	b := &cos.BaseURL{BucketURL: u}
	a := cos.NewClient(b, &http.Client{
		Transport: &cos.AuthorizationTransport{
			SecretID:  "这里填写自己的SecretID",
			SecretKey: "这里填写自己的SecretKey",
		},
	})
	//设置保存在存储桶中的文件地址,我保存到askhub文件夹下,命名为图片名
	name := "askhub/" + file.Filename
}

打开文件并向腾讯云COS上传图片

package main

import (
	"context"
	"github.com/gin-gonic/gin"
	"github.com/tencentyun/cos-go-sdk-v5"
	"net/http"
	"net/url"
)

func main() {
	r := gin.Default()
	r.POST("saveImageToCos", SaveImageToCos)
	r.Run(":8081")
}
func SaveImageToCos(c *gin.Context) {
	//获取图片数据流
	file, _ := c.FormFile("thumbnail")
	//创建cos客户端并设置SecretID,SecretKey和访问域名
	u, _ := url.Parse("这里填写自己的访问域名")
	b := &cos.BaseURL{BucketURL: u}
	a := cos.NewClient(b, &http.Client{
		Transport: &cos.AuthorizationTransport{
			SecretID:  "这里填写自己的SecretID",
			SecretKey: "这里填写自己的SecretKey",
		},
	})
	//设置保存在存储桶中的文件地址,我保存到askhub文件夹下,命名为图片名
	name := "askhub/" + file.Filename
	//打开文件,并向腾讯云COS上传图片
	f, _ := file.Open()
	a.Object.Put(context.Background(), name, f, nil)
}

 获取图片链接

上传到cos的图片访问连接我们可以自己拼接出

使用存储桶的访问域名加上图片在存储桶中的地址

package main

import (
	"context"
	"github.com/gin-gonic/gin"
	"github.com/tencentyun/cos-go-sdk-v5"
	"net/http"
	"net/url"
)

func main() {
	r := gin.Default()
	r.POST("saveImageToCos", SaveImageToCos)
	r.Run(":8081")
}
func SaveImageToCos(c *gin.Context) {
	//获取图片数据流
	file, _ := c.FormFile("thumbnail")
	//创建cos客户端并设置SecretID,SecretKey和访问域名
	u, _ := url.Parse("这里填写自己的访问域名")
	b := &cos.BaseURL{BucketURL: u}
	a := cos.NewClient(b, &http.Client{
		Transport: &cos.AuthorizationTransport{
			SecretID:  "这里填写自己的SecretID",
			SecretKey: "这里填写自己的SecretKey",
		},
	})
	//设置保存在存储桶中的文件地址,我保存到askhub文件夹下,命名为图片名
	name := "askhub/" + file.Filename
	//打开文件,并向腾讯云COS上传图片
	f, _ := file.Open()
	a.Object.Put(context.Background(), name, f, nil)
    //拼接图片地址,并响应链接地址
	imagePath := "这里填写自己的访问域名"+"/" + name
	c.String(http.StatusOK, "图片链接:%s", imagePath)
	return
}


以上就是使用Golang上传图片到COS并获取图片访问链接的所有内容

如果感觉这篇文章对你有帮助,不防点个赞吧!!!

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值