Image gets saved as a .txt file

Viewed 26

I am using multer to save an image from the client to mongoDB, and then rendering that image to the client as per the requirement.

When attempting to save the image from the frontend, it is getting saved as a .txt document.

How do I save it as a .png? (I am using Express on Node)

var multer = require('multer');
  
const storage = multer.diskStorage({
    destination: function(req, file, cb) {
    cb(null, 'src/');
    },
    filename: function(req, file, cb) {
     cb(null, new Date().toISOString().replace(/:/g, '-')+ file.originalname);
      }
  });

  
var upload = multer({ storage: storage });

app.post('/test', upload.single('image'), (req, res, next) => {
  
    var obj = {
        name: req.body.name,
        desc: req.body.desc,
        img: {
            data: fs.readFileSync(path.join(__dirname + '/src/' + req.file.filename)), 
            contentType: 'image/png'
        }
    }
    Image.create(obj, (err, item) => {
        if (err) {
            console.log(err);
        }
        else {
            item.save();
            res.redirect('/admin');
        }
    });
});

Frontend

<img src="data:image/<%=image.img.contentType%>;base64,
                    <%=image.img.data.toString('base64')%>">

Upon clicking "Save as" download.txt

0 Answers
Related