当前位置: 代码网 > it编程>前端脚本>Golang > go从指定的URL下载图片并保存到本地的代码实现

go从指定的URL下载图片并保存到本地的代码实现

2024年09月08日 Golang 我要评论
1.函数定义该函数接受一个 imagename 参数,图片的文件名。2.构建图片url使用 fmt.sprintf 函数构建图片的url,这个url指向一个特定的网络路径,用于下载图片。url :=

1.函数定义

该函数接受一个 imagename 参数,图片的文件名。

2.构建图片url

使用 fmt.sprintf 函数构建图片的url,这个url指向一个特定的网络路径,用于下载图片。

url := fmt.sprintf("https://xxxxxxx.com.cn/pic/l/sevp_nsmc_wxbl_fy4b_etcc_achn_lno_py_%s", imagename)

3.检查图片是否存在:

发起一个head请求到构建的url,检查图片是否存在。

如果图片不存在(http 404),记录一条日志并返回,不进行下载操作。

resp, err := http.head(url)
if err != nil {
	log.println(err)
	return // 发生错误时,跳过当前循环
}
defer resp.body.close()

if resp.statuscode == http.statusnotfound {
	log.printf("图片 %s 不存在于服务器\n", imagename)
	return // 图片不存在时,跳过当前循环
}

4.下载图片

如果图片存在,发起一个get请求,从url下载图片。

response, err := http.get(url)
if err != nil {
	log.println(err)
	return
}

5.创建本地文件

根据图片名称和预设的路径创建一个本地文件夹,用于保存下载的图片。

filepath := fmt.sprintf("./uploads/image/%s", imagename)
file, err := os.create(filepath)
if err != nil {
	log.println(err)
	return
}

6.保存图片到本地

下载的图片内容写入到本地文件中。

_, err = io.copy(file, response.body)
if err != nil {
	log.println(err)
	return
}

7.完整代码

在整个过程中,对任何可能发生的错误进行捕获和记录。
使用 defer 语句确保在函数返回之前关闭打开的文件和网络连接,释放资源。

func downloadimage(imagename string) {
	url := fmt.sprintf("https://xxxxxxx.com.cn/pic/l/sevp_nsmc_wxbl_fy4b_etcc_achn_lno_py_%s", imagename)
	// 如果不存在,检查 http 状态码
	resp, err := http.head(url)
	if err != nil {
		log.println(err)
		return // 发生错误时,跳过当前循环
	}
	defer resp.body.close()

	if resp.statuscode == http.statusnotfound {
		log.printf("图片 %s 不存在于服务器\n", imagename)
		return // 图片不存在时,跳过当前循环
	}
	response, err := http.get(url)
	if err != nil {
		log.println(err)
		return
	}
	defer response.body.close()

	filepath := fmt.sprintf("./uploads/image/%s", imagename)
	file, err := os.create(filepath)
	if err != nil {
		log.println(err)
		return
	}
	defer file.close()

	_, err = io.copy(file, response.body)
	if err != nil {
		log.println(err)
		return
	}
}

总结

总结来说,这段代码的主要功能是尝试从指定的url下载图片,并在下载前检查图片是否存在。如果存在,则下载并保存到本地;如果不存在,则记录错误并跳过下载。同时,它还处理了可能出现的错误,并确保在函数结束时正确地关闭了所有资源。

以上就是go从指定的url下载图片并保存到本地的代码实现的详细内容,更多关于go从指定url下载图片并保存的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com