【发布时间】:2013-10-16 12:50:21
【问题描述】:
我正在使用 golang net/http 包来构建一个网络服务器。现在我必须处理大文件上传,这意味着服务器可能会收到带有 Expect: 100 Continue 的请求。我不会向客户端发送响应,直到所有数据已经收到。但是每次我完成一个请求并返回时,golang默认会发送一个响应,我该如何实现呢?
【问题讨论】:
-
我不确定这是否有帮助,但 Go 中的
net/http服务器应该能正确处理Expect请求。查看golang.org/src/pkg/net/http/server.go#L1072 和golang.org/src/pkg/net/http/serve_test.go#L741 了解更多信息。 -
@Intermernet 谢谢!嗯,是的,我以前读过,它处理 100 Continues 似乎只是告诉客户端服务器支持它并请求发送更多数据。而我的问题是如何我可以从一个请求的许多连续数据部分中累积所有数据并处理它然后发回响应吗?
-
您是否使用 multipart/form-data 上传文件?如果是这样,请尝试
Request.MultipartReader(golang.org/pkg/net/http/#Request.MultipartReader) 将请求数据作为流读取。 -
@Intermernet 不...我使用纯HTTP body 来承载数据(既不是chunk 也不是其他)。所以我想知道我的方式是否是上传大文件数据的标准方式?
-
@cheneydeng 使用
Request.MultipartReader就像 Intermernet 说的,除非你有充分的理由不这样做。
标签: html file-upload webserver go