Node.js 无法读取属性';路径';未定义的

Node.js 无法读取属性';路径';未定义的,node.js,multer,Node.js,Multer,上载到服务器后,我试图记录文件的路径,但返回以下错误: TypeError:无法读取未定义的属性“path” 我设法上传了文件,但无法获取文件路径 router.post('/uploadFile',function(req,res,next){ if(req.method == "POST"){ var accessToken = req.query["access_token"]; var customerID = re

上载到服务器后,我试图记录文件的路径,但返回以下错误:

TypeError:无法读取未定义的属性“path”

我设法上传了文件,但无法获取文件路径

    router.post('/uploadFile',function(req,res,next){
        if(req.method == "POST"){
            var accessToken = req.query["access_token"];
            var customerID = req.decoded.userID;
            var Storage = multer.diskStorage({
                destination: function(req, file, callback) {
                    callback(null, "./public/images");
                },
                filename: function(req, file, callback) {
                    callback(null, file.fieldname + "_" + Date.now() + "_" + file.originalname);
                    console.log(req.file.path);
                }
            });

   var upload = multer({
                storage: Storage
            }).array("imgUploader", 3);
    });
你没有正确使用

  • multer的初始化需要在中间件代码之外进行
  • Multer自己的中间件(在init之后获得)需要在您的中间件之前执行(以便它可以在您访问之前解析请求)
  • 如果您使用的是数组,则有多个文件以相同的参数名上载,因此应使用
    req.files
    ,而不是
    req.file
    。结合这些,您的代码将成为:

    var Storage = multer.diskStorage({
                    destination: function(req, file, callback) {
                        callback(null, "./public/images");
                    },
                    filename: function(req, file, callback) {
                        callback(null, file.fieldname + "_" + Date.now() + "_" + file.originalname);
                        console.log(req.files['imgUploader'][0].path); //Or use a loop for all files
                    }
                });
    
    var upload = multer({
                    storage: Storage
                }).array("imgUploader", 3);
    
    
    router.post('/uploadFile', upload, function(req,res,next){
        if(req.method == "POST"){
            [...]
        }
    });