首页 > 解决方案 > 我正在使用 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

任何想法,请!

标签: node.jsfile-uploadmulterimage-upload

解决方案


推荐阅读