首页 > 解决方案 > Nodejs无法读取未定义的属性“文件名”

问题描述

我有 nodejs 的问题,当我想用​​图像发帖时,我收到一条错误消息“无法读取未定义的属性‘文件名’”

我没有看到我的错误在哪里,你能告诉我吗

这是我的中间件 multer:

const multer = require('multer');

const MIME_TYPES = {
  'image/jpg': 'jpg',
  'image/jpeg': 'jpg',
  'image/png': 'png',
  'image/gif': 'gif',
  
};

const storage = multer.diskStorage({
  destination: (req, file, callback) => {
    callback(null, 'images');
  },
  filename: (req, file, callback) => {  
    const name = file.originalname.split(' ').join('_');
    const extension = MIME_TYPES[file.mimetype];
    callback(null, name + Date.now() + '.' + extension);
  }
});


module.exports = multer({storage: storage}).single('image');

在我的 app.js

app.use('/images', express.static(path.join(__dirname, 'images')));

在我的 post.routes.js

const express = require('express');
const router = express.Router();
const auth = require('../middleware/auth');
const multer = require('../middleware/multer-config')
const postCtrl = require('../controllers/postController');

router.post('/new', auth, multer, postCtrl.createPost);

在我的 postController.js

exports.createPost = (req, res) => {
    
    // Create post in database
    console.log(req.body)
    const article = {
        title: req.body.title,
        content: req.body.content,
        userId: req.body.userId,
        picture: `${req.protocol}://${req.get('host')}/images/${req.file.filename}`
    };
    Post.create(article)
    .then(data => {
      res.send(data);
    })
    .catch(err => {
      res.status(500).send({
        message:
          err.message || "Some error occurred while creating the Article."
      });
    });
}; 

标签: javascriptnode.jsexpressmulter

解决方案


我想问题就在这里

picture: `${req.protocol}://${req.get('host')}/images/${req.file.filename}`

可能是您的请求没有属性“文件”,如果您在正文中发送 id,它必须是这样的 - req.body.file.filename

最好检查您的请求。


推荐阅读