I am attempting to create a directory based on the body of the request. Here is the code:
const storage = multer.diskStorage({
destination: function(request, file, callback) {
let userUploadDir = uploadDir + '/' + request.body.user + '/' + request.body.address;
fs.access(userUploadDir, async (err) => {
if (err) {
await fs.promises.mkdir(userUploadDir, { recursive: true });
}
});
callback(null, userUploadDir);
},
filename: function(request, file, callback) {
let date = new Date();
let stringDate = date.getFullYear() + "-" + date.getMonth() + "-" + date.getDate() + "-" + date.getHours() + "-" + date.getMinutes();
let newFileName = stringDate + "-" + file.originalname;
callback(null, newFileName);
},
fileFilter: function(request, file, callback) {
let ext = path.extname(file.originalname);
if (ext !== ".png" && ext !== ".jpg" && ext !== ".jpeg" && ext !== ".webp") {
return callback(new Error("Only images are allowed"));
}
callback(null, true);
}
});
const upload = multer({
storage: storage,
limits: {
fileSize: 1024 * 1024 * 5
}
});
router.post("/image", upload.fields([{ name: 'file', maxCount: 3 }]), async (request, response, next) => {
response.json({
"message":"Successful file uploaded."
})
}
My issue is that when this code is run, it will create the directory, but the file will not save to it and I cannot figure out what I am doing wrong here.