准备工作
首先要开通腾讯云对象存储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并获取图片访问链接的所有内容
如果感觉这篇文章对你有帮助,不防点个赞吧!!!