I’m using Multer to handle file uploads in my Express.js application. I’m trying to access the req.body
values in the destination
function of Multer’s diskStorage
option, but it’s returning undefined
.how do i pass name from /registerartist to req.body of multer desination
Here’s my code:
import express from 'express';
import {json} from 'express';
import dotenv from 'dotenv';
import {mongoose} from 'mongoose';
import UserModel from './src/Models/usermodel.js';
import TrackModel from './src/Models/trackmodel.js';
import cors from 'cors';
import multer from 'multer';
import fs from 'fs';
import path from 'path';
import { fileURLToPath } from 'url';
import { dirname } from 'path';
import SingerSchema from './src/Models/singermodel.js';
import Artist from './src/Models/artistmodel.js';
dotenv.config();
const PORT = process.env.PORT;
const app = express();
app.use(json());
app.use(cors())
app.use(express.urlencoded({ extended: true }));
// Define __dirname for path resolution
const __dirname = dirname(fileURLToPath(import.meta.url));
// Multer Storage Configuration
const upload = multer({
storage: multer.diskStorage({
destination: (req, file, cb) => {
const { name } = req.body;
const folderPath = `./uploads/artists/${name}`;
console.log(folderPath)
if (!fs.existsSync(folderPath)) {
fs.mkdirSync(folderPath, { recursive: true });
}
cb(null, folderPath);
},
filename: (req, file, cb) => {
cb(null, Date.now() + '-' + file.originalname);
}
})
});
//connect to Database
mongoose.connect("mongodb://localhost:27017/Anitify")
.then(()=>{
console.log("Connected to Mongodb")
})
.catch((err)=>{
console.log("Error connecting to mongodb",err);
})
app.post('/registerartist', upload.single('image'), (req, res) => {
const { name, email, password, genre } = req.body;
console.log("image is",req.file.image.originalname);
console.log("bodyis",req.body.name);
Artist.findOne({email:email})
.then(result=>{
if(!result){
Artist.create(req.body);
}else{
console.log("already exists");
}
})
.then(user=>res.json(user))
.catch((err)=>{
console.log(err);
res.json(err)
})
});