使用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 mainimport ("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对应的图像

在这里插入图片描述


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部