#javascript #typescript #multer
Вопрос:
Вот моя функция мультера —
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}`);
},
});
Вот маршрутизатор —
router.post("/", auth, multer({ storage }).fields([{ name: 'image', maxCount: 1 }, { name: 'video', maxCount: 1 }]), addMovie);
Вот что я получаю, когда я 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
}
]
}
Я отправляю изображение и видео. Я хочу получить доступ к полям внутри объектов.
И я не знаю, как это сделать.
Попробовал это — req.files.image[0]
и вот в чем ошибка — Property 'image' does not exist on type '{ [fieldname: string]: File[]; } | File[]'. Property 'image' does not exist on type 'File[]'.ts(2339)
Ответ №1:
Ты можешь попробовать (req as any).files.image[0]
. Это немного хлопотно с req
печатью 🙁