当前位置: 首页 > 面试题库 >

如何在Go中通过管道将HTTP响应传递给文件?

程昕
2023-03-14
问题内容

如何将以下代码转换为使用流/管道,从而无需将全部内容读入内存?就像是:
http.Get("http://example.com/").Pipe("./data.txt")

package main
import ("net/http";"io/ioutil")

func main() {
        resp, err := http.Get("http://example.com/")
        check(err)
        defer resp.Body.Close()
        body, err := ioutil.ReadAll(resp.Body)
        check(err)
        err = ioutil.WriteFile("./data.txt", body, 0666)
        check(err)
}
func check(e error) {
        if e != nil {
                panic(e)
        }
}

问题答案:

怎么io.Copy()样 可以在以下位置找到其文档:http :
//golang.org/pkg/io/#Copy

不过,这很简单。给它一个io.Reader和一个io.Writer,然后一次将数据复制到一个小块上(例如,一次不全部存储在内存中)。

因此,您可以尝试编写如下内容:

func main() {
  resp, err := http.Get("...")
  check(err)
  defer resp.Body.Close()
  out, err := os.Create("filename.ext")
  if err != nil {
    // panic?
  }
  defer out.Close()
  io.Copy(out, resp.Body)
}

我还没有测试以上内容;我只是从您上面的示例中快速地将其攻破,但是如果没有钱的话,它应该很接近。



 类似资料:
  • 问题内容: 请移至第二次更新。 我不想更改此问题的先前上下文。 我正在使用Java应用程序中的wkhtmltoimage。 使用它的标准方法是- 。 根据他们的文档,如果我们编写一个URL而不是输入URL,则输入将转换为STDIN。 我正在使用- 现在,我无法弄清楚如何将输入流传输到此过程。 我有一个读入的模板文件,并在末尾附加了一个字符串: 如何通过管道传递到流程的? 更新- 遵循Andrzej

  • 问题内容: 假设我有两个输入框,分别具有对应的ng-model作为fname和lname。如果我将http请求称为: 它会调用URL: 我在后端(python)遇到的错误是: 这些参数不以字符串形式发送吗?如果没有,该如何解决? 问题答案: 这是您的操作方式: Angular负责对参数进行编码。 Maxim Shoustin的答案不起作用(这不是有效的JavaScript文字),而JeyTheva

  • 因此,在这里我将basePackages硬编码为“com.example”。这不是我想要的。我想通过命令行参数从终端运行应用程序时接收包名。有没有一种方法可以将命令行参数传递给应用程序,并使用我在BasePackages中接收到的参数?提前致谢

  • 问题内容: 我有一条到服务器的ssh隧道(通过端口:9988)。我希望通过Go中的此端口路由我的http GET / POST请求。在Java中,我将指定DsocksProxyHost和DsocksProxyPort。我在Go中寻找类似的选项。预先感谢您的帮助。 问题答案: 使用以上注释中提供的信息,这是一个有关如何通过SOCKS代理隧道HTTP请求的有效示例:

  • 问题内容: 我试图找到定义可以以一般方式使用的组件的正确方法: 当然,可以想象并在父组件和子组件之间进行渲染的逻辑。 对于这个问题,这是一个虚拟的实现: 问题是,每当您用于定义包装器组件时,如何将某些属性传递给其所有子组件? 问题答案: 用新道具克隆Children 您可以使用React.Children遍历子级,然后使用React.cloneElement使用新的道具(浅合并)克隆每个元素,例如