我正在尝试将图像以及其他一些输入字段上载到我的数据库。当我仅尝试上传图像时,一切正常。我的表格:
QFutureWatcher
我的Submit方法:
<div class="file">
<form @submit.prevent="onSubmit" enctype="multipart/form-data">
<div class="fields">
<label>Upload File</label>
<input type="file" ref="file" @change="onSelect" />
</div>
<div class="fields">
<button>Submit</button>
</div>
</form>
</div>
最后,发布路线:
async onSubmit() {
const formData = new FormData();
formData.append('file', this.file)
try {
await axios.post('/projects/new', formData);
this.message = 'Uploaded';
}
catch (err) {
console.log(err);
this.message = 'Something went wrong'
}
},
它已按预期提交,一切都很好。问题是我想上传的不仅仅是照片到数据库。我想上传到数据库的所有内容都存储在名为personRoutes.post('/new', upload.single('file'), (req, res) => {
const person = new Person({
personData: {
file: req.file.path,
}
});
person.save()
.then(result => {
console.log('YES', result)
res.redirect('/projects')
})
.catch(err => {
console.log('KUT', err)
})
});
的对象中。该人obj看起来像这样:
person
我不知道如何将这两者同时发送到数据库。我所有的想法都是personData: {
file: '',
basicInformation: [
{
firstName: '',
surname: '',
email: '',
phone: '',
street: '',
city: '',
position: '',
website: '',
}
],
}
在将Cannot read property 'path' of undefined
obj中的file
发送到db之前,我曾尝试将其转换为formdata:
person
然后使用以下命令将人员对象发送到数据库:
const formData = new FormData();
this.person.personData.file = formData;
formData.append('file', this.file)
我该如何同时发送人obj和图像上传?就像我说的那样,仅上传图像效果很好,尝试一次性使用await axios.post('/projects/new', this.person);
进行发送,这就是由于某种原因而导致混乱的地方。任何帮助将不胜感激。