可以使用 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 格式的数据。

Golang Gin 框架:获取远程图片并下载到本地

原文地址: https://www.cveoy.top/t/topic/lCtE 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录