Мое приложение (использующее vue) позволяет пользователям загружать файлы с некоторой информацией о данных в мой серверный узел. Когда пользователь отправляет форму, срабатывает эта функция:
methods: {
buttonOK () {
const formData = new FormData()
formData.append('name', this.detailFirm.name)
formData.append('description', this.detailFirm.description)
formData.append('version', this.detailFirm.version)
formData.append('date', this.detailFirm.date)
formData.append('file', this.file)
for (var [key, value] of formData.entries()) {
console.log(key, value)
}
let headers = {
'Content-Type': 'multipart/form-data',
'Accept': 'multipart/form-data'
}
this.$http.put('/firmware', formData, {headers: headers})
this.visible = false
}
Оператор журнала показывает все, что должен, и когда этот запрос сделан, вкладка сети в инструментах chrome dev показывает проходящие данные сообщения и имеет все значения, которые он должен:
name: test
description: test
version: 1
date: 0555-05-05
file: (binary)
Мое промежуточное ПО multer выглядит так:
const multer = require('multer')
const mult = multer({
dest: '/firmware'
})
module.exports = function (req, res, next) {
/* --Convert multipart/form-data to useable format within express-- */
if (req.path === '/firmware') {
mult.single('file')
console.log('MULTER MIDDLEWARE')
}
next()
}
Оператор журнала там работает, что наводит меня на мысль, что multer работает.
Однако я не могу получить доступ к этой информации в бэкэнде. Здесь я попробовал как file
, так и formData
в качестве имени файла в mult.single('')
.
Вот моя функция контроллера:
let firmware = {
name: req.body.name,
version: req.body.version,
description: req.body.description,
date: req.body.date,
file: req.body.file
}
firmwareRepo.create(firmware, (err, create) => {
.............
Я прочитал некоторые другие вопросы и внес несколько корректировок, но я всегда получаю пустой объект, когда я регистрирую req.body
в контроллере. Пожалуйста, порекомендуйте.