2

我正在尝试使用 multer 仅上传带有节点的图像文件

文件上传成功:

app.use(multer({
  dest: __dirname + '/public/uploads/',
  onFileUploadData: function (file, data) {
    console.log(data.length + ' of ' + file.fieldname + ' arrived');
  },
  onFileUploadComplete: function (file) {
    console.log(file.fieldname + ' uploaded to  ' + file.path);
  }
}));

但我想将其限制为仅图像并添加一些用户身份验证(在下面的示例中尚未实现用户身份验证)。

当我启动包含 onFileUploadStart 的服务器时,它会登录到它上传的控制台,但是当我检查我的上传文件夹时,什么都没有。

app.use(multer({
  dest: __dirname + '/public/uploads/',
  onFileUploadStart: function (file) {
    console.log(file.mimetype);
    if (file.mimetype !== 'image/png' || file.mimetype !== 'image/jpg' || file.mimetype !== 'image/jpeg') {
      return false;
    } else {
      console.log(file.fieldname + ' is starting ...');
    }
  },
  onFileUploadData: function (file, data) {
    console.log(data.length + ' of ' + file.fieldname + ' arrived');
  },
  onFileUploadComplete: function (file) {
    console.log(file.fieldname + ' uploaded to  ' + file.path);
  }
}));
4

1 回答 1

2

问题在于您的布尔逻辑。

这个:

if (file.mimetype !== 'image/png' || file.mimetype !== 'image/jpg' || file.mimetype !== 'image/jpeg')

应该改为:

if (file.mimetype !== 'image/png' && file.mimetype !== 'image/jpg' && file.mimetype !== 'image/jpeg')
于 2014-11-02T21:23:22.617 回答