【问题标题】:Why HTTP request with file upload fails on first request (only)?为什么带有文件上传的 HTTP 请求在第一次请求时失败(仅)?
【发布时间】:2017-02-24 15:00:56
【问题描述】:

我的 HTTP 处理程序有问题。 当我启动 HTTP 服务器时,第一个请求此处理程序接收上传的文件引发错误:

multipart: Part Read: read tcp 127.0.0.1:9002->127.0.0.1:37704: read: bad file descriptor

下一个请求完美运行。

这里是 Handler 的开头:

func FileNewHandler(w http.ResponseWriter, r *http.Request) {

  if err := r.ParseMultipartForm(32 << 20); err!= nil {
    log.Fatal(err) // Here is where the error is logged
    return
  }

... 

仅供参考,我有 Nginx 作为代理,虽然我不认为问题来自这里。

有人知道错误的来源吗?

感谢您的帮助 ;-)

【问题讨论】:

  • 你能提供一个代码示例来重现吗?
  • 我正在尝试提供一个示例来重现该错误,但我不能...该示例在我的完整应用程序中的处理程序失败的情况下正常工作。我不明白为什么。
  • 我开始寻找答案了。我正在使用 goagain (github.com/rcrowley/goagain) 在构建后重新启动服务器。如果我停止并启动服务器,我没有任何问题,但是如果我使用 gogain 重新启动,则重新启动后的第一次上传失败。我会继续深入搜索,如果找到此问题的根源,我会发表评论。

标签: go file-upload httphandler


【解决方案1】:

正如我在上一条评论中所说,问题再次来自 goagain。 我发现有一个未合并的未解决问题:https://github.com/rcrowley/goagain/issues/25

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-28
    • 1970-01-01
    • 2011-06-10
    • 1970-01-01
    • 1970-01-01
    • 2018-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多