1

I'm using "multer": "^1.0.6", And i Want to save image in upload folder. My code is

app.post('/post', multer({dest: './uploads/'}).single('file'), function (req, res) {
response = {
    message: 'File uploaded successfully',
    filename: req.file.filename
};
res.end(JSON.stringify(response));
});

But I Have the file with this name in upload folder 8e6e425f8756e0bafb40ed1a3cb86964

Why I have this name without mimetype?

monkeyUser
  • 4,301
  • 7
  • 46
  • 95

2 Answers2

1

Multer saves files without extensions you can read this on GitHub:

filename is used to determine what the file should be named inside the folder. If no filename is given, each file will be given a random name that doesn't include any file extension.

If you want to save with the extension that you write your code like here:

var storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, '/tmp/my-uploads')
  },
  filename: function (req, file, cb) {
    cb(null, file.originalname); // modified here  or user file.mimetype
  }
})

var upload = multer({ storage: storage })

All information you can find here https://github.com/expressjs/multer/blob/master/README.md

Bartosz Czerwonka
  • 1,631
  • 1
  • 10
  • 11
1

Multer not worried about the extension of the file and leave it completely on your side: you have to define itself a function that will do it. For example, like this:

var multer  = require('multer');
var upload = multer({ storage: multer.diskStorage({

    destination: function (req, file, cb) {
      cb(null, './uploads');
    },

    filename: function (req, file, cb) {
      var ext = require('path').extname(file.originalname);
      ext = ext.length>1 ? ext : "." + require('mime').extension(file.mimetype);
      require('crypto').pseudoRandomBytes(16, function (err, raw) {
        cb(null, (err ? undefined : raw.toString('hex') ) + ext);
      });
    }

})});

app.post('/post', upload.single('file'), function (req, res) {
  response = {
    message: 'File uploaded successfully',
    filename: req.file.filename
  };
  res.end(JSON.stringify(response));
});
stdob--
  • 28,222
  • 5
  • 58
  • 73