是Node world的新手。
UseCase:
有一个在Angular front上传XLS文件的简单方案, 在Node上处理它们,进行一些操作,然后将JSON保存到 Mongo DB。
从Angular接收文件后,我正在搜索在Node上解析/处理文件的最佳方法,然后遇到有关这些着名节点模块的文章 - multer
,multiparty
和{{ 1}}。
每篇文章都解释了如何使用相应的模块,找不到任何一个在时使用哪一个。
我发现当您尝试将文件保存在磁盘存储上时,connect-multiparty
主要用于我的用例。
我应该忽略multer
还是实际使用它?
我应该何时使用multer
和multiparty
?
答案 0 :(得分:9)
此问题列出了一些选项:
How could I upload files in 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内存存储引擎。
答案 1 :(得分:5)
您可以将可用的文件处理库分为三类:它们是独立的还是Express.js特定的,它们存储中间文件还是使用流,以及中间文件是否存储在临时目录或内存中。
像busboy这样的独立解析器可以与Express.js一起使用,也可以不与Express.js一起使用。另一方面,Express.js中间件通过添加req.files
来扩展请求对象,您可以方便地访问文件。一些实现将中间文件存储在temp目录或内存中。其他允许您访问上传的文件内容流,而不会破坏服务器的内存或硬盘。
根据您的情况,提出以下问题,以确定哪个图书馆最适合您。
然后使用此决策树从最常用的文件上传处理库列表中选择一个。决策树来自文章:
Choose between Formidable, Busboy, Multer and Multiparty for processing file uploads