我正在尝试使用multer将单个图像上传到mongo,但在尝试访问图像路径时我一直收到此错误:
TypeError: Cannot read property 'path' of undefined
at router.post (D:\Workspace\AdminBootstrap\routes\admin_index.js:74:29)
以下是我上传图片的代码:
router.post('/add-category', uploads.single('category_image'), (req, res) => {
let title = req.body.title;
console.log('Category Title:\t' + title);
let slug = title.replace(/\s+/g, '-').toLowerCase();
let catImage = req.file.path; // error occurs here
console.log(catImage);
let category = new Category({
title: title,
slug: slug,
image: catImage
});
category.save()
.then(result => {
if (result) {
console.log('Saved Category:\t' + result);
res.redirect('/admin/home');
}
})
.catch(errors => {
console.error('Error Saving Category:\t' + errors);
});
});
这是我的模板:
<label>Upload Image</label>
<input name="category_image" class="form-control" type="file" accept="image/*" id="selImg" onchange="showImage.call(this)">
<img src="#" id="imgPreview" style="display: none; height: 100px; width: 100px">
任何人都可以向我解释为什么路径会抛出错误吗?
答案 0 :(得分:1)
该路径引发错误,因为&#34; file&#34;内部未定义&#34; req&#34;宾语。 它可能在&#34; req.body&#34;中定义。宾语。使用
的console.log(req.body)
确认。 由于标题是在&#34; req.body&#34;,&#34; file.path&#34;也应该在同一个对象上定义。
答案 1 :(得分:0)
在设置HTML时,表单的属性应为
enctype="multipart/form-data"
这会将您的文件保存在path变量中