crete upload file size limit in nodejs

                  *Upload file size

1. download nodejs and setup NPM in the terminal

 

/* open the terminal and run this command */
    $ npm init -y





2. install some packages for node js

  • $ npm install — save express express-file upload ejs
  • $npm install –save touch
  • $ npm install –save  nodemon

3. then create files using mkdir in terminal

  •  $ touch app.js
  • $ mkdir public
  • $ mkdir temp
  • $ mkdir views

4. OPEN the vs code throughout the terminal

  • $ . code (then open vs code then show file)

5. open psckage.json and change script like this:

{
  "name": "task-2",
  "version": "1.0.0",
  "main": "index.js",
  "scripts": {
    "start": "nodemon app.js"/* this is chend */(this change because it is automatically restart the sesrver)
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "description": "",
  "dependencies": {
    "ejs": "^3.1.10",
    "express": "^4.19.2",
    "express-fileupload": "^1.5.0"
  }
}

6. open the views folder and create an index.ejs file

  • in this file code the HTML  and give the title for the file upload size limit like this
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>file upload size limit </title>
       
    </head>
    <body>
        
    </body>
    </html>

7. style the HTML

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>file upload</title>
    <style>
        body{
            display: grid;
            place-items: center;
            background-color: blueviolet;
        }
    </style>
</head>
<body>
    <h1> file upload </h1>
    </form>
</body>
</html>

8. then open app.js file and conect html and creat a sresver

const express = require('express')
const fileUpload = require("express-fileupload")
const path = require('path')

const app = express()

app.set('view engine', 'ejs')



app.listen(3000, () => console.log(" server on port 3000"))
  • this is user created and run this program in the terminal
  • $ npm start

 

9. then open index.ejs file and create a 2 form first is /singel and second is /Multiple

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>file upload</title>
    <style>
        body{
            display: grid;
            place-items: center;
            background-color: blueviolet;
        }
    </style>
</head>
<body>
    <h1>File upload</h1>
    <h3> singel fileUpload</h3>
        <form action="/single" method="post" enctype="multipart/form-data">
        <input type="file" name="mFile" id="" required accept="iemage/jpg, image/png, image/svg+xml, application/pdf"/>
        <input type="submit" value="upload" />
    </form>
    <h3> multi fileUpload</h3>
    <form action="/multiple" method="post" enctype="multipart/form-data">
        <input type="file" name="mFiles" id="" required accept="iemage/jpg, image/png, image/svg+xml, application/pdf" multiple />
        <input type="submit" value="upload" />
    </form>
</body>
</html>

output:-

open browser and type: http://localhost:3000/

10. open the app.js and give the file size limit of only one MB.

app.use(fileUpload({
    limits: { fileSize: 1 * 1024 * 1024 },/* this given only 1mb  */
    createParentPath: true,
    safeFileNames: true,
    preserveExtension: 5,
    limitHandler: function (req, res, next) /* this is showing the request and respond handling for images */
{
        Logger.warn("File size limit has been exceeded");/*  this is error handling and show file size is above then 1MB */
    },
    abortOnLimit: false,
    useTempFiles: true,
    tempFileDir: './temp' /* this is give to path of temporary images folder because storage is more expensive,this is secondary part of storage */
}));

 

11. then open app.js, link the form and handle the error, giving the sum captions. complete the project

const express = require('express')
const fileUpload = require("express-fileupload")
const path = require('path')

const app = express()

app.set('view engine', 'ejs')

app.use(fileUpload({
    limits: { fileSize: 1 * 1024 * 1024 },
    createParentPath: true,
    safeFileNames: true,
    preserveExtension: 5,
    limitHandler: function (req, res, next) {
        Logger.warn("File size limit has been exceeded");
    },
    abortOnLimit: false,
    useTempFiles: true,
    tempFileDir: './temp'
}));


app.get('/', async ( req, res, next) => {
    res.render('index');
})

app.post('/single', async (req, res, next) => {
    try{
        const file = req.files.mFile
        console.log(file)
        const fileName = new date().getTime().toString() + path.extname(File.name)
        const savePath = path.join(__dirname, 'public', 'Uploads', filename)
        if (file.truncated){
            throw new Error('File Size is to Big...')
        }
        if ( file.mimetype !== 'image/jpg'){
            throw new Error('only jpegs are supported')
        }
        await file.mv(savePath)
        res.redirect('/')

    } catch(error){
        console.log(error)
        res.send('sucessfuliy  Uploading file')
    }
})

app.post('/multiple', async (req, res, next ) =>{
    try {
        const files = req.files.mFiles
        let promises =[]
        files.forEach(file => {
            const savePath = path.join(__dirname, 'public', 'Uploads' , file.name)
        promises.push( file.mv(savePath) )
    res.redirect('/')

        promise.push(file.mv(savePath))
        })
    } catch (error) {
console.log(error)
    res.send('error uploading file...') 
    }
})

app.listen(3000, () => console.log(" server on port 3000"))

Video:-

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top