【发布时间】:2020-09-27 18:09:33
【问题描述】:
我在 Go 中有一个服务器来处理文件上传。这是一个遗留代码,所以我不能接触太多。
如果服务器在请求头中检测到一些错误,它应该中断上传,并且它应该向客户端返回一条消息,指出出现了问题。
处理函数类似于以下内容:
func(w http.ResponseWriter, r *http.Request) {
// Check the header. Could be more than one.
if r.Header.Get("key") == "not as expected" {
w.WriteHeader(500)
w.Write("key is wrong")
return
}
//handle the file upload
}
标头检查只是说明问题的一个例子
服务器在写入后关闭连接并从函数中返回,即使请求没有完成(收到文件)。
在客户端 (Java) 上,当我使用带有错误值的 key 和要作为正文上传的文件发出请求时,我得到了一个损坏的管道异常并且它无法正确处理响应。
实际上我无法触摸客户端代码。
服务器端有办法等到请求结束后再关闭连接吗?
【问题讨论】:
-
您在
Write之后返回,因此请求 完成。如果您想阅读请求正文,请确保您阅读了请求正文。