node.js - 多部分文件上传问题

标签 node.js multipart koa formidable busboy

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

  • 不是 Node 6 问题; Node 4(之前可以正常工作)也会出现同样的问题。
  • 已排除 packages.json 中的版本问题;已针对所有相关软件包的原始工作版本和最新版本进行了测试。
  • 在最新的 Chrome 和最新的 Firefox 中发布展览。
  • 当直接从 Postman 使用与浏览器发送的完全相同的 header 进行 POST 时,问题不会出现(CookieReferer 除外,两者都不是可以在 Postman 中设置)。
  • Koa 包装器出现问题 koa-better-bodykoa-multer .
  • 直接使用时出现问题 busboy , formidable ,甚至 multiparty .
  • 与人们报告的问题类似 multer issue ;尝试了所有建议(包括在文件参数之前添加字段参数的长镜头)无济于事。
  • 已尝试重新创建最小的测试用例以进行重现,但未能成功。
  • 尝试逐行削减我的应用程序,根据最小测试用例检查 Babel 输出,直到它们在功能上相同,问题仍然存在于我的应用程序中,但在测试用例中没有。
  • 所有测试都在同一台服务器上使用相同的浏览器运行。

调试时,问题的最清晰 View 是在 incoming_form.js 中的 formidable。发生单个 data 事件:

enter image description here

然后是一个abort事件:

enter image description here

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

我曾希望通过从 formidabl 切换到 busboy 来快速解决问题,但现在我真的束手无策,因为这个问题需要解决,而我已经没有办法查看这个问题了。我已经尝试以我能想到的所有方式对其进行切片,以我能想到的所有方式对其进行调试,并且没有编写我自己的多部分解析器(这不是我喜欢的任务),我很快就没有选择了。

有没有人遇到过这个?您对我如何继续调试或生成最小测试用例有什么想法吗?

最佳答案

原来问题出在 koa-proxy 上:它没有正确转发多部分 POST 请求。我通过切换到 koa-proxy2 来修复它,我将研究为 koa-proxy 项目贡献一个修复程序。

关于node.js - 多部分文件上传问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40334988/

相关文章:

javascript - 如何访问 JSON API 响应中的嵌套信息?

error-handling - KoaJS可能在('error')回调中呈现错误页面?

koa - 绑架-限制用户仅获取与他有关的数据

javascript - Node.js/Koa2 服务器 - 在请求后几分钟执行作业

node.js - js 网格和自动完成

node.js - 将 Solr 与 Meteor 结合使用

javascript - 在node.js服务器中使用https同步读取文件

java - 将多部分文件插入数据库

java - 如何在运行时更改 spring.http.multipart.maxFileSize?

c# - 匈牙利字符的邮件问题