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 🙁