node.js - 无法读取属性文件名 multer 和节点错误
问题描述
我刚刚开始构建这个使用 multer 和 node js 的示例。我构建了一个单独的项目,它实际上运行良好,但是当我复制相同的设置时,对从 app.get 到 router.get 的路由进行微小的更改时,我收到了错误:
TypeError: Cannot read property 'filename' of undefined
这是我的路线代码:
router.post('/userprofilepic', ensureAuthenticated, (req, res) => {
upload(req, res, (err) => {
if (err) {
res.render('/user/userdashboard', {
msg: err
});
} else {
const newImage = {
imageName: req.file.filename,
image_caption: req.body.image_caption,
member_id: req.user.member_id
}
new Image(newImage)
.save()
.then(image => {
req.flash('success_msg', 'Image added');
res.redirect('/user/userdashboard');
})
.then(resize => {
let imgHeight = 150;
let imgWidth = 150;
sharp(req.file.path)
.blur(.3)
.toFile('public/thumbs/blurred_' + req.file.originalname, function (err) {
if (!err) {
req.flash('success_msg', 'Thumbnail created');
//res.redirect('/');
}
});
})
.catch(error => {
console.log(error);
});
}
});
});
这是我的 multer 配置:
// Set storage engine
const storage = multer.diskStorage({
destination: './public/uploads/',
filename: function (req, file, cb) {
cb(null, req.user.member_id + '_' + Date.now() + '_' + file.originalname);
}
});
// Init upload
const upload = multer({
storage: storage
}).single('imageName');
//load user model
require('../models/User');
const User = mongoose.model('users');
//load user profile model
require('../models/Profile');
const Profile = mongoose.model('profiles');
// Load images model
require('../models/Images');
const Image = mongoose.model('images');
最后是我的表格:
<form action="/user/userprofilepic" method="POST" enctype="multipart/form-data">
<div class="form-group">
<img id="blah" src="#" alt="your image" height="300" />
</div>
<div class="form-group">
<label for="exampleFormControlFile1">Example file input</label>
<input type="file" class="form-control-file" name="imageName" id="imageName">
</div>
<div class="form-group">
<label for="exampleInputEmail1">Image Caption</label>
<input type="text" class="form-control" name="image_caption">
<small id="emailHelp" class="form-text text-muted">We'll never share your email with anyone else.</small>
</div>
<div class="form-group">
<input type="text" class="form-control" name="member_id" value="{{user.member_id}}" hidden>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
我尝试了 console.log(req.file) 并且它是未定义的。对于我的一生,我无法理解我做错了什么。
请指教。
解决方案
想通了...这是我的错误,在我的服务器中。我已经初始化了一个上传方法,它覆盖了 multer 上传功能,因此没有文件名。
推荐阅读
- express - 我想通过 eval 函数通过 res.send() 发送结果
- javascript - 如何为映射的对象元素赋予不同的样式?
- python - 如果列包含列表,则复制数据帧行的函数
- python - 如何从发布请求函数 django 视图中检索值。DRF
- python - Pandas Dataframe 问题:如果为 NaN,则减去下一行并添加特定值
- android - 使用导航组件对 DialogFragment 进行动画转换
- python - 使用内联消息在 Python 中写入日志
- python - 删除数组中的索引
- ios - Swift Software 在后台应用程序后导致连接中止
- python - 如何仅打印精确列号大于 x 的行?带有 Python 的表格 API