How to Upload File using formidable module in Node.js ?
A 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.
Approach
To upload file using the formidable module in node we will first install formidable. Then create an HTTP server to accept form submissions, use formidable to parse incoming file data, handle file upload, and store it in the desired directory on the server.
Step to Upload file using Formidable in Node.js
Step 1: Initializing the Node App
Use the below command to create a new node app
npm init -y
Step 2: Installing the formidable module
You can visit the link Install formidable module. You can install this package by using this command.
npm install formidable
After installing the formidable module, you can check your yards version in the command prompt using the command.
npm version formidable
Step 3: Run the Application
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
Project Structure:
NOTE: 'uploads' is the folder where your files will be uploaded.
Example: This example demonstrates using formidable module to handle file uploads by parsing the request, saving the uploaded file to the uploads directory, and responding with "Successfully uploaded".
// Filename - index.js
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) {
let oldPath = files.profilePic.filepath;
let newPath = path.join(__dirname, 'uploads')
+ '/' + files.profilePic.name
let 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');
});
Steps to run the program:
Run the index.js file using the below command:
node index.js
Now open POSTMAN to run this API and send sample data as shown below:
Here in the body, we have passed send two fields, one is the name of type='Text' and the other is the profile pic of type='File' as shown above.
Now go to your uploads folder, your file is uploaded as shown below:
So this is how you can use a formidable module for uploading files and handling incoming form data easily and efficiently.