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

时间:2018-03-10 12:01:13

标签: node.js image ejs multer

我正在尝试使用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">

任何人都可以向我解释为什么路径会抛出错误吗?

2 个答案:

答案 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变量中