I want to insert base64 encoded data of an image(input) into the DB, but the data that is being returned is not right.
Current output:UGVyc2lzdGVudEZpbGU6IGY1OWY0ZmQzZTFiM2ExMWU0MTYxM2JiMDAuanBnLCBPcmlnaW5hbDogcHJvZmlsZS1waWMuanBnLCBQYXRoOiBDOlxVc2Vyc1xBbnVyYWdcQXBwRGF0YVxMb2NhbFxUZW1wXGY1OWY0ZmQzZTFiM2ExMWU0MTYxM2JiMDAuanBn
Expected output: /9j/4AAQSkZJRgABAQAASABIAAD/4QCMRXhpZgAATU0AKgAAAAgABQESAAMAAAABAAEAAAEaAAUAAAABAAAASgEbAAUAAAABAAAAUgEoAAMAAAABAAIAAIdpAAQAAAABAAAAWgAAAAAAAABIAAAAAQAAAEgAAAABAAOgAQADAAAAAQABAACgAgAEAAAAAQAAB4CgAwAEAAAAAQAABDgAAAAA/+0AOFBob3Rvc2hvcCAzLjAAOEJJTQQEAAAAAAAAOEJJTQQlAAAAAAAQ1B2M2Y8AsgTpgAmY7PhCfv/AABEIBDgHgAMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/...
I'm using formidable to upload files and converting the data to base64 using btoa() and Buffer.from(data, 'base64')
Upload API:
const formidableOptions = {
// uploadDir: path.join(__dirname, "..", "avatar"),
keepExtensions: true,
maxFileSize: 1 * 1024 * 1024,
};
router.post("/users/me/avatar", auth, async (req, res) => {
const form = new formidable.IncomingForm(formidableOptions);
form.onPart = (part) => {
if (!fileExtensionRegex.test(part.mimetype)) {
form._error(new Error("Invalid file type"));
} else {
// part.on('file',(data)=>{
// console.log(btoa(data)
// })
form._handlePart(part);
}
};
form.parse(req, async (err, fields, files) => {
if (err) {
return res.status(500).send({ error: err.message });
}
for (const file in files) {
// console.log(Buffer.from(files[file], "base64").toString("base64"));
//Output when Buffer.from() is used: AA==
console.log(btoa(files[file]));
req.user.avatar = btoa(files[file]);
await req.user.save();
}
res.send("Avatar uploaded successfully");
});
});