multer,multiparty和connect-multiparty + Nodejs之间的区别

Bei*_*man 13 multipartform-data node.js express multer

我是Node世界的新手.

UseCase:

有一个简单的方案是在Angular前端上传XLS文件,在Node上处理它们,进行一些操作然后将JSON保存到Mongo DB上.

从角接收文件后,我在寻找什么是解析/工艺节点上的一个文件,然后在文章来到这些著名节点模块的最佳方式- multer,multipartyconnect-multiparty.

每篇文章都解释了如何使用相应的模块,找不到任何一个告诉哪一个使用的时候.

我发现这multer主要用于您尝试将文件保存在磁盘存储上并且不足以满足我的用例.

我应该忽略multer或实际使用它吗?

我什么时候应该使用multipartyconnect-multiparty

Sim*_*n D 11

这个问题列出了一些选项:

我怎样才能在ExpressJS 4.x中上传文件

有一些模块可以直接解析多种形式的数据,并在这些模块之上构建中间件.

Github明星直接解析的前三个模块是node-stridable(3376),busboy(814),node-multiparty(557).

顶级中间件是multer(建立在busboy,2515星).connect-multiparty有一个提示不要使用它的注释.connect-busboy四年没有更新.

基于此,如果你想要Express中间件,我建议使用node-formidable,busboy或multer.

另请注意,multer具有MemoryStorage内存存储引擎.


psp*_*spi 8

您可以将可用的文件处理库分为三类:它们是独立的还是 Express.js 特定的,它们是存储中间文件还是使用流,以及中间文件是存储在临时目录中还是内存中。

像 busboy 这样的独立解析器可以在有或没有 Express.js 的情况下使用。另一方面,Express.js 中间件通过添加req.files您可以方便地访问文件来增强请求对象。一些实现将中间文件存储在临时目录或内存中。其他人让您访问上传的文件内容流,而不会破坏服务器的内存或硬盘。

根据您的情况,提出这些问题以确定哪个库最适合您。

  • 你是否需要 Express.js?
  • 保存中间文件没问题,还是要流式传输文件?
  • 如果保存中间文件没问题,你更喜欢它们在内存中还是在硬盘上?

然后使用此决策树从最常用的文件上传处理库列表中选择一个。决策树来自文章:

选择 Formidable、Busboy、Multer 和 Multiparty 来处理文件上传

选择 Formidable、Busboy、Multer 和 Multiparty 来处理文件上传

  • 很好的答案,但是多方在这个流程图中去哪里呢? (2认同)
  • 后续 - 参考原始文章,看起来我上面问题的答案是 multiparty 与 Busboy 几乎属于同一类别,只是 Busboy 更快,所以为什么要麻烦 Multiparty 呢?(我不一定同意速度是唯一的标准(易用性、文档、安全性等呢?),但这解释了为什么它没有出现在流程图中。) (2认同)