Javascript multer npm:TypeError:无法读取属性';路径';未定义的

Javascript multer npm:TypeError:无法读取属性';路径';未定义的,javascript,node.js,express,mongoose,multer,Javascript,Node.js,Express,Mongoose,Multer,我上传一个图像文件到我的服务器时遇到问题,我在YouTube上观看了一个关于multer的教程,我做了与教程中完全相同的事情,无论出于什么原因,我都会得到一个错误:(“TypeError:无法读取未定义的属性“path”)。我在谷歌上搜索错误,发现一些人也有同样的问题,我试着像他们一样解决它,但对我来说不起作用 这是我的代码: const multer = require('multer'); const storage = multer.diskStorage({ destination

我上传一个图像文件到我的服务器时遇到问题,我在YouTube上观看了一个关于multer的教程,我做了与教程中完全相同的事情,无论出于什么原因,我都会得到一个错误:(“TypeError:无法读取未定义的属性“path”)。我在谷歌上搜索错误,发现一些人也有同样的问题,我试着像他们一样解决它,但对我来说不起作用

这是我的代码:

const multer = require('multer');

const storage = multer.diskStorage({
  destination: function(req, file, cb) {
    cb(null, './public/images/profilePictures');
  },
  filename: function(req, file, cb) {
    cb(null, new Date().toISOString() + file.originalname);
  }
});

const fileFilter = (req, file, cb) => {
  // reject a file
  if (file.mimetype === 'image/jpg' || file.mimetype === 'image/png') {
    cb(null, true);
  } else {
    cb(null, false);
  }
};

const upload = multer({
  storage: storage,
  limits: {
    fileSize: 1024 * 1024 * 5
  },
  fileFilter: fileFilter
});

app.use(express.static('public'))

图像模式和模型:

const imageSchema = new mongoose.Schema({
    profilePicture: String
})

const Image = new mongoose.model('Image', imageSchema)
我的邮寄路线:

app.post('/changeProfilePic', upload.single('profilePicture'), function(req, res, next){
    console.log(req.file);
   const newImage = new Image({
       profilePicture: req.file.path
   })
   newImage.save()
})
我的html上传表单:

<form action="/changeProfilePic" method="POST" enctype = "multipart/form-data">
      <input type="file" name="profilePicture" placeholder="Image" />
      <button class="btn btn-light btn-lg" type="submit">Upload</button>
    </form>

上传

当我记录(req.file)的值时,它说它的类型是“未定义的”,所以这一定意味着multer没有识别或者甚至没有收到图像文件。multer没有得到文件,我做错了什么?

我将目的地更改为
/上传
对我来说很好

嗨,您在
=
登录
enctype=“multipart/form data”
,尝试更改为
enctype=“multipart/form data”
您给文件的文件名可能有问题,导致multer失败,并且无法将文件属性附加到请求对象。Linux和Windows都不支持带有冒号的文件名,这会产生
new Date().toISOString()
文件名。@Vitalii您好,我改了,但仍然不起作用。@JimNilsson。我删除了新的``Date().toISOString()``仍然multer无法识别req.files您是否也确保目录
/public/images/profilePictures
存在,并且路径正确?