Multer - 无法读取未定义的 属性 "path"

Multer - Cannot Read Property "path" of Undefined

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

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

路径抛出错误,因为 "file" 未在 "req" object 中定义。 大概是在"req.body"object中定义的。使用

console.log(req.body)

确认。 由于标题是在 "req.body" 上定义的,因此 "file.path" 也应该在相同的 object.

上定义

在设置您的 HTML 时,您的表单应该有一个属性 enctype="multipart/form-data" 这会将您的文件保存在路径变量