0

I'm using multer to upload a file. It's uploading fine but I can't work out how to get the generated filename it's made. I'd like to post it back into the response. The filename that's been made is highlighted in the comments:

const storage = multer.diskStorage({
    destination: function (req, file, cb) {
        cb(null, '../app/src/assets/game/src/assets/images/')
    },
    filename: function (req, file, cb) {
        cb(null, file.fieldname + '-' + Date.now() + '.png') <!-- I need this in my postback response -->
    }
});

const upload = multer({ storage: storage }).single('avatar');

router.post('/upload/', function (req, res) {
    upload(req, res, function (err) {
        if (err) {
            // An error occurred when uploading
            throw err;
        }



        res.json({
            sucess: true,
            message: 'Image was uploaded successfully'
        });
        // Everything went fine
    })
});
Andrew Howard
  • 2,818
  • 5
  • 33
  • 59
  • 1
    Does this answer your question? [Node/Multer Get Filename](https://stackoverflow.com/questions/34328846/node-multer-get-filename) – Molda Jan 09 '20 at 16:27

1 Answers1

2

For getting the image name for single image upload use req.file.filename :

res.json({
    success: true,
    message: 'Image was uploaded successfully',
    filename: req.file.filename
});

For getting the images name for multiple images upload use req.files :

let filenames = []
for(let i = 0; i < req.files.length; i++) {
    filenames.push(req.files[i].filename);
}
res.json({
    success: true,
    message: 'Image was uploaded successfully',
    filename: filenames
});
coderman401
  • 582
  • 3
  • 17