How to Upload File using formidable module in Node.js ?

Formidable module is used for parsing form data, especially file uploads. It is easy to use and integrate into your project for handling incoming form data and file uploads.

Installation of formidable module:

  1. You can visit the link Install formidable module. You can install this package by using this command.
    npm install formidable
  2. After installing formidable module, you can check your yargs version in command prompt using the command.
    npm version formidable
  3. After that, you can just create a folder and add a file for example index.js, To run this file you need to run the following command.
    node index.js

Filename: index.js

filter_none

edit
close

play_arrow

link
brightness_4
code

const express = require('express');
const fs = require('fs');
const path = require('path')
const formidable = require('formidable');
   
const app = express();
   
app.post('/api/upload', (req, res, next) => {
    
    const form = new formidable.IncomingForm();
    form.parse(req, function(err, fields, files){
  
        var oldPath = files.profilePic.path;
        var newPath = path.join(__dirname, 'uploads')
                + '/'+files.profilePic.name
        var rawData = fs.readFileSync(oldPath)
      
        fs.writeFile(newPath, rawData, function(err){
            if(err) console.log(err)
            return res.send("Successfully uploaded")
        })
  })
});
   
app.listen(3000, function(err){
    if(err) console.log(err)
    console.log('Server listening on Port 3000');
});

chevron_right


Steps to run the program:

  1. The project structure will look like this:
    project structureNOTE: ‘uploads’ is the folder where your files will be uploaded.
  2. Make sure you have install express and formidable module using following commands:
    npm install formidable
    npm install express
  3. Run index.js file using below command:
    node index.js

    Output of above command

  4. Now open POSTMAN to run this API and send sample data as shown below:
    Postman APIHere in body, we have passed send two fields, one is name of type=’Text’ and other is profilePic of type=’File’ as shown above.
  5. Now go to your uploads folder, your file is uploaded as shown below:
    Succes

So this is how you can use formidable module for uploading files and handling incoming form data easily and efficiently.

My Personal Notes arrow_drop_up

To obtain a position of responsibility that utilizes my skills and keen to work in an environment where I can enrich my knowledge

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.