Am new to Node world.
UseCase :
Was having a simple scenario of uploading XLS files on Angular front, process them on Node, make some manipulations and then save JSON on to Mongo DB.
After receiving files from Angular, i was searching what is the best way to parse / process a file on Node and then came across articles on these famous node modules - multer
, multiparty
and connect-multiparty
.
Every article explains how to use corresponding module and couldn't find any one telling which one to be used when.
I found that multer
is mainly used when you are trying to save a file on Disk Storage and that doesn't suffice my use case.
So should i ignore multer
or actually use it ?
When should i actually use multiparty
and connect-multiparty
?
formidable has been out there for longer (since 12 years ago), it also has more versions, more frequent updates, a bigger community of maintainers, more daily downloads, more weekly downloads and more monthly downloads. multer has more stars on Github, more followers on Github and more forks.
Usage. Multer adds a body object and a file or files object to the request object. The body object contains the values of the text fields of the form, the file or files object contains the files uploaded via the form.
Formidable is a Node. js module for parsing form data, especially file uploads.
This question lists some of the options:
How could I upload files in ExpressJS 4.x
There are modules to parse multiform data directly, and express middleware built on top of these.
The top three modules by Github stars for parsing directly are node-formidable (3376), busboy (814), node-multiparty (557).
The top middleware is multer (built on busboy, 2515 stars). connect-multiparty has a note suggesting not to use it. connect-busboy has not been updated in four years.
Just based on this I'd suggest node-formidable, busboy, or multer if you want Express middleware.
Also note that multer has a MemoryStorage memory storage engine.
You can categorize the available file processing libraries into three categories: are they standalone or Express.js-specific, do they store intermediate files or use streams, and if the intermediate files are stored in temporary directory or in memory.
Standalone parsers like busboy can be used with or without Express.js. On the other hand Express.js middlewares augment the request object by adding req.files
that you can conveniently access the files. Some implementations store intermediate files either in temp directory or in memory. Others let you access stream of uploaded file contents without busting the server's memory or hard disk.
Depending on your situation, ask these questions in order to determine which library suits you best.
Then pick one from the list of most used file upload processing libraries using this decision tree. The decision tree is from the article:
Choose between Formidable, Busboy, Multer and Multiparty for processing file uploads
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With