最简单的下载文件的方法?

5 http file go

我可以做类似下面的事情,这给了我一个响应类,但我不确定如何将io.reader写入文件.什么是最直接的方式?

http.Get("https://www.domain.com/some.jpg")
Run Code Online (Sandbox Code Playgroud)

Den*_*ret 8

如果文件足够小,最简单的解决方案是使用ioutil.WriteFileioutil.ReadAll结合使用 :

resp, err := http.Get("your url")
bytes, err := ioutil.ReadAll(resp.Body)
err = ioutil.WriteFile(filename, bytes, 0666)
Run Code Online (Sandbox Code Playgroud)

如果您的文件不是那么小,最好避免创建和填充bytes数组.然后你应该使用io.Copy,它只是将读者的字节复制到编写器:

resp, err := http.Get("your url")
f, err := os.Create(filename)
defer f.Close()
_, err := io.Copy(f, resp.Body)
Run Code Online (Sandbox Code Playgroud)

您必须在两种情况下都添加相关的错误处理.