无法读取未定义的 属性 'path'

cannot read property 'path' of undefined

我试图在上传到服务器后记录 文件的路径,但是 returns 出现以下错误:

TypeError: Cannot read property 'path' of undefined

我成功上传了文件,但无法获取文件路径。

    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

  1. multer 的初始化需要在您的中间件代码之外进行
  2. Multer 自己的中间件(在 init 之后获得)需要在您的之前执行(以便它可以在您访问之前解析请求)。
  3. 如果您使用数组,有多个文件使用相同的参数名称上传,所以应该使用 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"){
            [...]
        }
    });