Here is my multer function –
const storage = multer.diskStorage({ destination: (req, file, callback) => { let type = req.params.type; let path = `./data/${type}`; fs.mkdirsSync(path); callback(null, path); }, filename: (req, file, cb) => { const ext = mime.extension(file.mimetype); const random = Math.floor(Math.random() * (9999 - 1000 + 1)) + 1000; cb(null, `${Date.now()}-${random}.${ext}`); }, });
Here is the router –
router.post("/", auth, multer({ storage }).fields([{ name: 'image', maxCount: 1 }, { name: 'video', maxCount: 1 }]), addMovie);
Here is what I’m getting when I’m console.log(req.files)
–
[Object: null prototype] { image: [ { fieldname: 'image', originalname: '����� ����.png', encoding: '7bit', mimetype: 'image/png', destination: './data/undefined', filename: '1631293039713-7613.png', path: 'data\undefined\1631293039713-7613.png', size: 13133 } ], video: [ { fieldname: 'video', originalname: 'file_example_MP4_480_1_5MG.mp4', encoding: '7bit', mimetype: 'video/mp4', destination: './data/undefined', filename: '1631293039720-3601.mp4', path: 'data\undefined\1631293039720-3601.mp4', size: 1570024 } ] }
I’m sending an image and a video. I want to access the fields inside the objects. And I’m not sure how to do that.
Tried that – req.files.image[0]
and that’s the error – Property 'image' does not exist on type '{ [fieldname: string]: File[]; } | File[]'. Property 'image' does not exist on type 'File[]'.ts(2339)
Advertisement
Answer
You can try (req as any).files.image[0]
. Its a bit of a hassle with req
typings 🙁