多部分文件上传问题

时间:2016-10-31 00:05:27

标签: node.js multipart koa formidable busboy

我有一个Koa应用程序,其multipart/form-data文件上传突然停止了。我现在花了8个多小时试图找出问题所在。我尝试/验证的内容:

  • 不是Node 6问题;节点4(以前工作)也会出现同样的问题。
  • 排除了packages.json中的版本问题;已针对所有相关软件包和最新版本的原始工作版本进行了测试。
  • 在最新的Chrome和最新的Firefox中发布展品。
  • 直接从邮递员直接发布时,问题与展示完全相同的标题<({1}}和Cookie除外,这两个都不能在邮递员中设置)
  • 问题展示了Koa包装koa-better-bodykoa-multer
  • 直接使用busboyformidable甚至multiparty时出现问题。
  • 类似于人们在multer issue上重新定位的问题;尝试了所有建议(包括在文件参数之前添加字段参数的远景)无济于事。
  • 尝试重新创建最小的测试用例来重现,但一直无法。
  • 尝试逐行削减我的应用程序,检查Babel输出与最小测试用例,直到它们在功能上相同,问题仍然存在于我的应用程序中,但不是在测试用例中。
  • 所有测试都使用相同的浏览器在同一台服务器上运行。

调试时,Referer中最清晰的问题是强大的。发生单个incoming_form.js事件:

enter image description here

然后是data事件:

enter image description here

之后,浏览器最终会超时。 (该文件大于第一个abort事件中收到的15个字节。)

我曾希望通过从formidabl切换到busboy来快速修复,现在我是一个真正的绑定,因为这个问题需要得到解决,而且我找不到解决问题的方法。我试图以我能想到的方式对其进行切片,以我能想到的方式进行调试,并且没有编写自己的多部分解析器(不是我津津乐道的任务),我快速耗尽了选项。

有没有人碰过这个?您对我如何进行调试或生成最小测试用例有什么想法吗?

1 个答案:

答案 0 :(得分:1)

事实证明问题出在koa-proxy:它无法正确转发多部分POST请求。我通过切换到koa-proxy2修复了它,我将研究为koa-proxy项目提供修复。