使用服务器端的“io.Pipe”处理大型文件上载

时间:2018-05-25 09:02:09

标签: google-app-engine go image-processing image-uploading

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

注意

  • 这两项服务正在通过HTTP进行通信。
  • 我正在使用REST模式(没有HTML格式:使用POSTMAN测试)。
  • 非常欢迎具体的例子。
  • 请不要皱眉这是我的第一个stackoverflow问题。

1 个答案:

答案 0 :(得分:0)

有点不愿回答这个问题,因为我不确定究竟是什么问题或者您尝试了什么。

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

http.Request实际上将请求正文保存在io.ReadCloser中。这意味着标准的io.Reader实现可以流式传输。

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

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

然后你可以从http处理程序

中读取它
func(w http.ResponseWriter, r *http.Request) {
    process(r.Body)
}

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