Golang Gin框架:下载远程图片到OSS
以下是一个使用Gin框架将远程图片下载到OSS的示例代码:
package main
import (
"bytes"
"io/ioutil"
"net/http"
"os"
"strings"
"github.com/gin-gonic/gin"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
router := gin.Default()
router.GET("/download", func(c *gin.Context) {
url := c.Query("url")
// 下载远程图片
resp, err := http.Get(url)
if err != nil {
c.JSON(http.StatusBadRequest, gin.H{
"error": "failed to download the image",
})
return
}
defer resp.Body.Close()
// 读取图片内容
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
c.JSON(http.StatusBadRequest, gin.H{
"error": "failed to read the image",
})
return
}
// 将图片上传到OSS
client, err := oss.New("<your-endpoint>", "<your-access-key-id>", "<your-access-key-secret>")
if err != nil {
c.JSON(http.StatusBadRequest, gin.H{
"error": "failed to create OSS client",
})
return
}
bucket, err := client.Bucket("<your-bucket-name>")
if err != nil {
c.JSON(http.StatusBadRequest, gin.H{
"error": "failed to get OSS bucket",
})
return
}
// 获取文件名
filename := strings.Split(url, "/")
filename = filename[len(filename)-1:]
// 上传图片到OSS
err = bucket.PutObject("<your-object-path>"+filename, bytes.NewReader(body))
if err != nil {
c.JSON(http.StatusBadRequest, gin.H{
"error": "failed to upload the image to OSS",
})
return
}
c.JSON(http.StatusOK, gin.H{
"message": "image uploaded to OSS successfully",
})
})
router.Run(":8080")
}
在上面的代码中,我们首先使用http.Get()方法下载远程图片,然后使用oss.New()方法创建OSS客户端,使用bucket.PutObject()方法将图片上传到OSS。
需要注意的是,我们使用strings.Split()方法从图片URL中提取文件名,并将其添加到OSS对象路径中。此外,我们还需要在代码中替换<your-endpoint>、<your-access-key-id>、<your-access-key-secret>和<your-bucket-name>为您自己的OSS配置信息。
通过这个示例代码,您可以学习如何在Gin框架中将远程图片下载到OSS。
原文地址: https://www.cveoy.top/t/topic/lCqw 著作权归作者所有。请勿转载和采集!