Multer无法读取未定义的属性“路径”

时间:2019-09-13 10:29:30

标签: node.js axios multipartform-data multer

我正在尝试将图像以及其他一些输入字段上载到我的数据库。当我仅尝试上传图像时,一切正常。我的表格:

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);进行发送,这就是由于某种原因而导致混乱的地方。任何帮助将不胜感激。

0 个答案:

没有答案