1

I have a CMS for a food automation system and I'm going to add a part for upload pictures for foods:

<form method="post" enctype="multipart/form-data" action="/upload">
    <td><input class="styleFormForAddProducts foodpicForAddFood" type="file" name="file"></td>
    <td><input class="styleFormForAddProducts submitForAddFood" type="submit" value="Submit" ></td>
</form>

I wrote this code for making a POST request in Express.js:

app.post('/upload', function (req, res) {
    var tempPath = req.files.file.path, 
        targetPath = path.resolve('./uploads/image.png');
    if (path.extname(req.files.file.name).toLowerCase() === '.png') {
        fs.rename(tempPath, targetPath, function(err) {
            if (err) 
                throw err;
            console.log("Upload completed!");
        });
    } else {
        fs.unlink(tempPath, function () {
            if (err) 
                throw err;
            console.error("Only .png files are allowed!");
        });
    }
}); 

However when I define this app.use, I get an error:

Middleware: app.use(express.bodyParser({uploadDir:'/img'}));
Error: Error: Most middleware (like bodyParser) is no longer bundled with Express and must be installed separately. Please see https://github.com/senchalabs/connect#middleware.

When I define a middleware like this :

app.use(bodyParser({uploadDir:'/img/'}));

I don't have any errors but my code doesn't work correctly .

Rory McCrossan
  • 331,213
  • 40
  • 305
  • 339
Mohammad Goldast
  • 367
  • 2
  • 4
  • 14

1 Answers1

0

This solution worked for me :

multer  = require('multer'),
upload = multer({ dest: 'views/img' });




app.post('/upload',upload.single('file'), function (req, res) {

});

And my form HTML form :

<form method="post" enctype="multipart/form-data" action="/upload">
    <input class="styleFormForAddProducts foodpicForAddFood" type="file" name="file">
    <input class="styleFormForAddProducts submitForAddFood" type="submit" value="Submit" >
</form>
Mohammad Goldast
  • 367
  • 2
  • 4
  • 14