node.js - 我正在使用 Node js,但在使用我的后端代码上传两个文件时遇到问题(一个图像和一个 pdf 文件)
问题描述
我实际上得到了这个错误(PS:我在上传文件夹中获得了图像和pdf文件,但没有在数据库中添加任何内容):
TypeError: Cannot read property 'filename' of undefined
at CreatePost (C:\Users\21658\Desktop\Sponsorini\Controllers\PostsC.js:16:41)
at Layer.handle [as handle_request] (C:\Users\21658\Desktop\Sponsorini\node_modules\express\lib\router\layer.js:95:5)
at next (C:\Users\21658\Desktop\Sponsorini\node_modules\express\lib\router\route.js:137:13)
at Immediate.<anonymous> (C:\Users\21658\Desktop\Sponsorini\node_modules\multer\lib\make-middleware.js:53:37)
at processImmediate (internal/timers.js:463:21)
这是控制器代码:
CreatePost : function(req,res) {
Posts.create(
{ name_event:req.body.name_event,
Description:req.body.Description,
photo:req.file.filename,
file:req.file.filename,
}
,function(err,User){
if (err){
console.log('fiiiiilllllllllllllllleeeeeeee',req.file)
console.log(err)
res.json({msg: 'error',statut:500,data:null})
}
else {
res.status(200).json({msg:'utilisateur ajouté',statut: 200,data : User})
}
})
},
这也是 multer 代码:
const multer = require('multer')
const uuid = require("uuid").v4;
const path=require('path')
const storage = multer.diskStorage({
destination: (req,file,cb)=>{
cb(null,'files/');
},
filename:(req,file,cb)=>{
const ext = path.extname(file.originalname);
const originalname = `${uuid()}${ext}`+file.originalname;
cb(null, originalname);
console.log("file",file);
}});
const fileFilter = (req,file,cb)=>{
if (file.mimetype =='image/jpeg' || file.mimetype == 'image/png' || file.mimetype == 'image/jpg'){
cb(null,true);
}
else if (file.mimetype ==='application/pdf'){
cb(null,true);
}
else{
cb(null,false);
}
}
const upload = multer({storage:storage,fileFilter:fileFilter});
module.exports=upload
最后,这是路由器代码:
const PostsC = require('../Controllers/PostsC')
const upload=require('../middleware/uploads')
const route = require('express').Router()
route.post('/addPos',upload.fields([
{
name:'photo',maxCount:1
},
{
name:'file',maxCount:1
}
]),PostsC.CreatePost);
route.get('/getonePos/:id',PostsC.getOnePost);
route.get('/getallPos',PostsC.getAllPosts);
route.put('/updatePos/:id',PostsC.updatePostById);
module.exports=route
任何想法,请!
解决方案
推荐阅读
- c# - 如何在数据网格中的图片框中显示图像?
- php - 检测移动短信阅读器预览
- python-3.x - 用不同的字符串分隔数组
- mysql - 轻松更改表数据以无限制地添加外键
- regex - Perl - 如何在模式上应用负面的lookbehing/lookahead?
- autodesk-forge - Model Derivative API - 使用 objectid 返回 404 错误获取对象属性
- jquery - jQuery,按钮文本更改后的setTimeout
- laravel - 关于如何将此添加租户方法转换为可以接受/拒绝的请求的建议/指导
- lenskit - 如何仅测试相关项目并从 Lenskit 3.0-M2 中的交叉折叠测试中删除热门项目
- node.js - vim、FreeBSD 和 nodemon