Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Difference between multer, multiparty and connect-multiparty + Nodejs

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 ?

like image 806
BeingSuman Avatar asked Oct 18 '16 03:10

BeingSuman


People also ask

Which is better multer or formidable?

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.

Why use multer?

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.

What is formidable in node JS?

Formidable is a Node. js module for parsing form data, especially file uploads.


2 Answers

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.

like image 147
Simon D Avatar answered Oct 23 '22 19:10

Simon D


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.

  • do you need Express.js or not?
  • is saving intermediate files ok, or do you want to stream the files?
  • if saving intermediate files is alright, would you prefer them in memory or on hard disk?

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

Choose between Formidable, Busboy, Multer and Multiparty for processing file uploads

like image 24
pspi Avatar answered Oct 23 '22 20:10

pspi