Golang Gin 框架:获取远程图片并下载到本地
可以使用 Go 的标准库中的 net/http 包来获取远程网络图片,并使用 os 包来保存到本地文件夹。
以下是一个示例代码:
package main
import (
"fmt"
"net/http"
"os"
"io"
)
func main() {
imageUrl := 'https://example.com/image.jpg'
resp, err := http.Get(imageUrl)
if err != nil {
fmt.Println("Error while downloading image: ", err)
return
}
defer resp.Body.Close()
file, err := os.Create("local-image.jpg")
if err != nil {
fmt.Println("Error while creating file: ", err)
return
}
defer file.Close()
_, err = io.Copy(file, resp.Body)
if err != nil {
fmt.Println("Error while copying image data to file: ", err)
return
}
fmt.Println("Image downloaded successfully!")
}
在 Gin 框架中,可以将上述代码封装在一个路由处理函数中,以响应客户端的请求:
func downloadImage(c *gin.Context) {
imageUrl := c.Param("url")
resp, err := http.Get(imageUrl)
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": "Error while downloading image"})
return
}
defer resp.Body.Close()
file, err := os.Create("local-image.jpg")
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": "Error while creating file"})
return
}
defer file.Close()
_, err = io.Copy(file, resp.Body)
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": "Error while copying image data to file"})
return
}
c.JSON(http.StatusOK, gin.H{"message": "Image downloaded successfully!")
}
func main() {
router := gin.Default()
router.GET("/download/:url", downloadImage)
router.Run(":8080")
}
在上述示例中,路由 /download/:url 接收一个参数 url,表示要下载的远程图片的 URL 地址。路由处理函数 downloadImage 中的代码和前面的示例基本相同,只是返回的结果改为了 JSON 格式的数据。
原文地址: https://www.cveoy.top/t/topic/lCtE 著作权归作者所有。请勿转载和采集!