准备工作
首先要开通腾讯云对象存储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并获取图片访问链接的所有内容
如果感觉这篇文章对你有帮助,不防点个赞吧!!!
该文章详细介绍了如何利用Golang和腾讯云对象存储服务COS进行图片上传。首先,需要开通COS服务,创建存储桶并设置权限。然后,通过Gin框架接收图片数据流,使用cos-go-sdk-v5创建COS客户端,设置SecretID和SecretKey。接着,将图片上传到指定的存储路径,并生成图片访问链接。最后,文章提供了一个完整的Golang代码示例来实现这个功能。

1297

被折叠的 条评论
为什么被折叠?



