Node JS Resize Image Before Upload using Multer Sharp
Hi dev,
In this quick example, let's see node js resize image before upload multer. you can understand a concept of node js compress image before upload. we will help you to give example of node.js image uploading with multer. This article goes in detailed on node js multer sharp resize image. you will do the following things for nodejs sharp resize image example.
I will give you step by step simple example of how to resize image before upload using multer, sharp with node js and express js. this example we will simple upload image and resize with 200X200 and quality will be 90%. let's follow bellow steps:
Preview:
Step 1: Create Node App
run bellow command and create node app.
mkdir my-app
cd my-app
npm init
Step 2: Install express and multer
run bellow command and create node app.
npm install express multer --save
npm install sharp --save
Step 3: Create app.js file
app.js
const express = require('express');
const multer = require('multer');
const path = require('path');
const sharp = require('sharp');
const fs = require('fs');
const app = express();
const storage = multer.diskStorage({
destination: function(req, file, cb) {
cb(null, 'uploads/');
},
filename: function(req, file, cb) {
cb(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname));
}
});
var upload = multer({ storage: storage })
app.get('/', (req, res) => {
res.sendFile(__dirname + '/index.html');
});
app.post('/', upload.single('image'),async (req, res) => {
const { filename: image } = req.file;
await sharp(req.file.path)
.resize(200, 200)
.jpeg({ quality: 90 })
.toFile(
path.resolve(req.file.destination,'resized',image)
)
fs.unlinkSync(req.file.path)
res.redirect('/');
});
app.listen(3000);
Step 4: Create index.html file
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<title>Node js Resize Image Before Upload using Multer Example - ItSolutionStuff.com</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<h1>Node js Resize Image Before Upload using Multer Example - ItSolutionStuff.com</h1>
<form action="/" enctype="multipart/form-data" method="post">
<input type="file" name="image" accept='image/*'>
<input type="submit" value="Upload">
</form>
</body>
</html>
make sure you have to create "uploads/resized" directory.
now you can simply run by following command:
npm start
open following url:
localhost:3000
i hope it can help you...
Hardik Savani
I'm a full-stack developer, entrepreneur and owner of ItSolutionstuff.com. I live in India and I love to write tutorials and tips that can help to other artisan. I am a big fan of PHP, Laravel, Angular, Vue, Node, Javascript, JQuery, Codeigniter and Bootstrap from the early stage. I believe in Hardworking and Consistency.
We are Recommending you
- Node js Express Multiple Image Upload using Multer Example
- File Upload in Node JS using Multer Example
- Node js Express Image Upload using Multer Example
- Laravel 8 Resize Image Before Upload Example
- Four Reasons Why Node.js is your Server-side Hero
- Laravel 7/6 Resize Image Before Upload Example
- How to Connect MySQL Database in Node JS?
- Laravel Authenticate User in NodeJS with Socket io using JWT
- How to Upgrade Node.js Version in Ubuntu?
- How to Use Foreach Object in Node.js?
- Laravel 5.2 chat message module using socket.io, redis, express and nodejs from from scratch.
- Crop, Resize, Frames etc on Selected Image in PHP using Aviary