#javascript #node.js #file-upload #multer
Вопрос:
Я буквально перепробовал все возможные решения проблемы, но ни одно из них не работает, интересно то, что я действительно могу получить доступ к req.body, но не могу получить доступ к req.файлу. Если у кого-то есть какая-либо идея, пожалуйста, поделитесь ею, спасибо.
форма:
<form action="/books" method="POST" enctype="multipart/form-data">
<label for="cover">Cover</label>
<input type="file" id="cover" name="cover">
<button type="submit">Create</button>
</form>
маршрутный манипулятор:
const imageMimeTypes = ['image/jpeg','image/jpg','image/png', 'image/gif']
const upload = multer({
dest: uploadPath,
fileFilter(req, file, callback){
if(imageMimeTypes.includes(file.mimetype)){
return callback(null, true)
}
callback(new Error('the mimetype of the image is not valid'), null)
}
})
router.post('/', upload.single('cover'), async (req, res) => {
const book = new Book({
title: req.body.title,
author: req.body.author,
publishDate: new Date(req.body.publishDate),
pageCount: req.body.pageCount,
description: req.body.description,
coverImageName: req.file.filename
})
try {
await book.save();
res.redirect('/books')
} catch (error) {
renderNewPage(res, book, true)
}
})
Комментарии:
1. Можете ли вы получить доступ
file
к методу filefilter? Кроме того, есть ли какие-либо ошибки, которые вы видите в консоли?2. Где проходит ваш
/books
маршрут?