Golang大文件下载

发布于 2022-10-15 00:27:57阅读 1019

文件下载

func DownloadFile() {
	url := "https://www.baidu.com/img/pc_79bff59263430e2e42693b50cf376490.png"
	resp, _ := http.Get(url)
	defer resp.Body.Close()

	data, err := io.ReadAll(resp.Body)
	if err != nil {
		panic(err)
	}

	_ = os.WriteFile("./pc_79bff59263430e2e42693b50cf376490.png", data, 0777)
}

上面用到了io.ReadAll,如果是小文件没什么问题,大文件就不合适了,需要用io.Copy

大文件下载

func DownloadFile() {
	url := "https://download.geany.org/geany-1.38_osx-4.dmg"
	response, _ := http.Get(url)

	defer response.Body.Close()

	out, err := os.Create("./geany-1.38_osx-4.dmg")
	//wt := bufio.NewWriter(out)

	defer out.Close()

	n, err := io.Copy(out, response.Body) //使用固定的32K缓冲区,因此无论源数据多大,都只会占用32K内存空间。
	fmt.Println("write", n)
	if err != nil {
		panic(err)
	}
	//wt.Flush()
	fmt.Println("ok")
}

参考

https://www.cnblogs.com/smartrui/p/12110576.html

广而告之,我的新作品《语音助手》上架Google Play了,欢迎下载体验