I'm uploading file using multer in my nodejs (express js) application which is working fine. I have put a mime type check there also to allow only png files but if I change the ext of the uploaded file from abc.exe to abc.png it also gets uploaded which is wrong.
here is my code.
var multer = require('multer');
var imagefolder = __base + 'public/complaintimages/';
var diskstorage = multer.diskStorage({
    destination: function (req, file, cb) {
        if (common.ImageMimeTypes.indexOf(file.mimetype) < 0) {
            common.ActionOutput.Status = common.ActionStatus.WrongFileUploaded;
            common.ActionOutput.Message = 'Invalid image file: ' + file.originalname;
            cb(new Error('FileUpload:' + common.ActionStatus.WrongFileUploaded), null);
        } else
            cb(null, imagefolder);
    },
    filename: function (req, file, cb) {
        var filenm = randomstring.generate(10);
        //console.log(filenm + file.originalname);
        cb(null, filenm + file.originalname);
    }
});
var upload = multer({
    storage: diskstorage
});
It should check the file content for mime type. Renaming other into png should not be uploaded. It seems to be bug in the library. Please advice.
                        
In your route handler when you have the saved file name, you can use the
mmmagicmodule:Update
If
mmmagicdoesn't work for you then you can use thefile-typemodule but it works on buffers so you first will have to read the file (or some part of it) into a buffer and check the mime type withfile-type. Theread-chunkmodule can be handy to read part of the file.See: