使用go语言来下载图片

需要用到的包

“fmt”
“io/ioutil”
“net/http”

流程

好的,来一步步分析该代码的执行流程。

首先,我们需要发送HTTP请求来获取要下载的文件。代码中使用了Go语言内置的http库,使用http.Client创建了一个HTTP客户端实例,然后调用Get方法向指定URL地址发送GET请求,获取响应结果。这里要注意,如果请求失败,err变量不为nil

url := "https://empic.dfcfw.com/645451834198237185/w900h600/art"
client := http.Client{}
response, err := client.Get(url)
if err != nil {
    fmt.Println("获取失败")
}

接着,我们检查响应码是否为200。若响应码不为200,意味着服务器未正常响应,这时应该输出错误信息并退出程序。

defer response.Body.Close()
if response.StatusCode != http.StatusOK {
    fmt.Println("响应码错误")
}

然后,我们需要将响应体的内容写入文件中。使用ioutil库的ReadAll方法读取响应体中的所有内容,并将其保存到data变量中。然后,使用ioutil库的WriteFile方法将data变量的内容写入到filename文件中。若写入文件过程中出现错误,应该输出错误信息并退出程序。

filename := "google.jpg"
data, err := ioutil.ReadAll(response.Body)
if err != nil {
    fmt.Println("读取响应数据失败")
}
err = ioutil.WriteFile(filename, data, 666)
if err != nil {
    fmt.Println("写入文件失败")
}

最后,不要忘记关闭响应体。

defer response.Body.Close()

至此,整个下载文件的过程就完成了。

完整代码

package main

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

func main() {
	url := "https://empic.dfcfw.com/645451834198237185/w900h600/art"
	client := http.Client{}
	response, err := client.Get(url)
	if err != nil {
		fmt.Println("获取失败")
	}
	defer response.Body.Close()
	if response.StatusCode != http.StatusOK {
		fmt.Println("响应码错误")
	}
	filename := "google.jpg"
	data, err := ioutil.ReadAll(response.Body)
	if err != nil {
		fmt.Println("读取响应数据失败")
	}
	err = ioutil.WriteFile(filename, data, 666)
	if err != nil {
		fmt.Println("写入文件失败")
	}
}

运行结果

生成了url对应的图像

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值