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")
}