3

My Code:

Js File:

var formidable = require('formidable');  
var fs = require('fs');  
var ex = require('express');  
var fse = require('fs-extra');  
var app = ex();

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

app.get('/form', function(req, res) {  
  res.render(__dirname + '/views/front.ejs', {title: 'form-page'});  
}).listen(8081);

app.post('/form', function(req, res) {
    var form = new formidable.IncomingForm();
    form.parse(req, function (err, fields, files) {
      var oldpath = files.fil.path;
      var newpath = __dirname + '/uploads/' + files.fil.name;
      var fileExt = files.fil.name.split('.').pop();
      fse.move (oldpath, newpath, function (err) {
         if (err) { throw err; }
      });
   });
});  

Html/Ejs File:

<html>
<title> <%= title %> </title>
<body>
<h2> Form </h2>
<form action="/form" method="post" enctype="multipart/form-data">
   Name: <input type="text" name="name" /><br>
   File: <input type="file" name="fil"  />
   <input type="submit" value="Submit">
</form>
</body>
</html>

all the packages are properly installed and with this code, files(with any extension) are getting uploaded to the desired directory properly.

What i want is for only image files to be uploaded ex:- jpeg,png etc
Thank you.

Zaheen
  • 821
  • 9
  • 11

1 Answers1

1

Use this code:

form.onPart = function (part) {
    if(!part.filename || part.filename.match(/\.(jpg|jpeg|png)$/i)) {
        this.handlePart(part);
    }
    else {
        console.log(part.filename + ' is not allowed');
    }
}

Source: uploading files using express.js and node, limiting extensions

Chandra Kumar
  • 4,127
  • 1
  • 17
  • 25