I've sent this request from client.
if(file){
const data = new FormData()
const fileName = Date.now() + file.name
data.append('file', file) // file comes from state while submitting
data.append('name', fileName)
try {
await axios.post('/upload_image', data)
} catch (error) {
console.log(error.message);
}
}
Nodejs
const multer = require('multer')
// file upload
const storage = multer.diskStorage({
destination: (req, file, cb) => {
console.log(req.body);
cb(null, "./public/images/");
},
filename: (req, file, cb) => {
cb(null, req.body.name)
},
});
const upload = multer({ storage });
router.post("/upload_image", upload.single('file'), (req,res)=>{
console.log(req.body);
try {
res.status(200).json("file uploaded successfully")
} catch (error) {
console.log(error.message);
}
});
If I print req.body in
router.post("/upload_image", upload.single('file'), (req,res)=>{
console.log(req.body.name)
console.log(req.file)
......................
.......................
})
Here name gets printed and req.file also gets printed. But, inside
const storage = multer.diskStorage({
destination: (req, file, cb) => {
...................
..............................
},
filename: (req, file, cb) => {
console.log(req.body.name); //undefined
cb(null, req.body.name)
},
});
name becomes undefined and app gets crashed. Why the req object didn't go to diskStorage function. What is the issue here?