如何使用go语言下载带有http请求的文件

Pab*_*mer 1 http download go

我想使用go http包从go lang中的url下载文件,并将图像保存到磁盘,以便以后显示在我的网页上.我该怎么做呢?

我需要这样做是因为我想从instagram下载图像并将它们保存到我的公共文件夹中以便在我的网页上显示.

我在下面创建了一个答案供其他人使用我想出的代码.

Pab*_*mer 5

经过一番研究,我想出了这个.

import (
    "os"
    "net/http"
    "io"
)

func downloadFile(filepath string, url string) (err error) {

  // Create the file
  out, err := os.Create(filepath)
  if err != nil  {
    return err
  }
  defer out.Close()

  // Get the data
  resp, err := http.Get(url)
  if err != nil {
    return err
  }
  defer resp.Body.Close()

  // Writer the body to file
  _, err = io.Copy(out, resp.Body)
  if err != nil  {
    return err
  }

  return nil
}
Run Code Online (Sandbox Code Playgroud)

它运作良好,但可能需要一些改进用于生产.

  • `log.Fatal`调用`os.Exit`,所以恐慌什么都不做(另外,你通常不应该对基本错误感到恐慌).您没有关闭响应正文(请阅读[http包docs](https://golang.org/pkg/net/http/)),这将泄漏连接.没有理由将整个文件缓冲到内存中,您可以将下载直接复制到打开的文件中. (2认同)