Go语言下载网络图片

每个编程语言中文件操作、字符串操作都是最基本的功能,需要熟练掌握应用。
下载网络图片,并将文件保存到本地路径,本文就介绍go语言中的一个实现示例。

实现思路: 函数定义中包含保存文件路径以及图片的http地址,首先需要根据图片http地址截取其最后一段作为文件名,然后使用go语言自带的http库请求获取图片,最后将获取到结果保存到文件中。

实现代码如下:

package main

import (
    "fmt"
    "io/ioutil"
    "net/http"
    "strings"
)

// 下载图片信息
func downLoad(base string, url string) error {
    pic := base
    idx := strings.LastIndex(url, "/")
    if idx < 0 {
        pic += "/" + url
    } else {
        pic += url[idx+1:]
    }
    v, err := http.Get(url)
    if err != nil {
        fmt.Printf("Http get [%v] failed! %v", url, err)
        return err
    }
    defer v.Body.Close()
    content, err := ioutil.ReadAll(v.Body)
    if err != nil {
        fmt.Printf("Read http response failed! %v", err)
        return err
    }
    err = ioutil.WriteFile(pic, content, 0666)
    if err != nil {
        fmt.Printf("Save to file failed! %v", err)
        return err
    }
    return nil
}

func main() {
    savePath := "./"
    url := "https://avatar.csdnimg.cn/2/9/0/1_togolife.jpg"
    err := downLoad(savePath, url)
    if err != nil {
        fmt.Println("Download pic file failed!", err)
    } else {
        fmt.Println("Download file success.")
    }
    return
}

  1. 字符串操作
    使用strings库LastIndex方法获取图片http路径中最后字符串作为文件名,如https://avatar.csdnimg.cn/2/9/0/1_togolife.jpg返回最后一个/位置。
    再通过字符串切片操作获取1_togolife.jpg,并与文件保存路径相加得到保存图片的完整文件名

  2. 文件操作
    使用ioutil库WriteFile写入文件,配置0666权限表示新文件可读可写权限。在读取http返回结果时,也使用ioutil库ReadAll方法获取结果数据。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容