javascript - 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."
});
});
};
解决方案
我想问题就在这里
picture: `${req.protocol}://${req.get('host')}/images/${req.file.filename}`
可能是您的请求没有属性“文件”,如果您在正文中发送 id,它必须是这样的 - req.body.file.filename
最好检查您的请求。
推荐阅读
- file - QtCreator 移动文件
- arrays - XML中的结构数组没有包装节点?
- c - 为什么对来自传感器的数据使用环形缓冲区
- python - 如何在 Flask 应用程序中运行后台控制任务?
- node.js - 节点 setInterval() 太慢了
- python - 获取 subprocess.run 来创建文件?
- java - 重定向到从一个控制器到另一个控制器的 POST 请求 Spring Boot
- python - 尝试导入 plotly.express 但即使安装了 pandas 也会出现此错误: ImportError: Plotly express requires pandas to be installed
- substrate - 为 RMRK 运行同步时出现“状态数据库错误:预期的修剪模式:受约束”
- flutter - 如何在 Flutter 移动应用中构建 http 服务器作为后台服务?