在服务器端使用"io.Pipe"处理大型文件上传



作为我学习过程的一部分,我最近开始了一项新的挑战,即使用 golang 创建一个照片马赛克网络应用程序。由于我计划在App Engine上托管它,因此我将其分为2个服务:1个处理图像上传,另一个处理图像处理。我在这里要完成的是,在收到第一个字节后立即开始处理图像。在做研究时,我遇到了这个要点cryptix/client.go。我需要使用此方法将请求读入io。管道,然后将其即时流式传输到我的图像处理服务,我的谷歌搜索都没有帮助:所有可以看到的是一个 GO 客户端发送文件,而我想要一个 Go 服务器接收文件。

  • 这两个服务通过 HTTP 进行通信。
  • 我正在使用REST模式(没有html形式:使用POSTMAN测试(。
  • 非常欢迎具体的例子。
  • 请不要皱眉,这是我的第一个堆栈溢出问题。

有点不愿意回答这个问题,因为我不确定确切的问题是什么或你尝试过什么。

但这只是一个流式 http 读取。

一个 http.请求实际上将请求正文保存在 io 中。阅读更近。这意味着标准io。读取器实现可以流式传输此内容。

您需要做的是创建一个处理数据的函数。

func process(r io.Reader) {
// do something
}

然后你可以从 HTTP 处理程序中读取它

func(w http.ResponseWriter, r *http.Request) {
process(r.Body)
}

不知道您的确切问题或您需要什么帮助,我无法进一步详细说明。

最新更新