Multer JavaScript中的文件类型验证

时间:2018-10-10 10:28:21

标签: node.js file-upload multer

我正在使用multer上传文件。这是我的multer代码

const multer = require('multer');
const maxSize = 2 * 1024 * 1024;
const fileType = require('file-type');

const storage = multer.diskStorage({
  destination: (req, file, cb) => {
    cb(null, 'uploads')
  },

  filename: (req, file, cb) => {
    cb(null, file.fieldname + '-' + Date.now() + '.pdf')
  },

});
const upload = multer({
  storage: storage,
  fileFilter: (req, file, cb) => {
     if (!file.originalname.match(/\.pdf$/)) {
       return cb(new Error('Only pdf files are allowed!'), false);
     }
     cb(null, true);
   },
  limits: { fileSize: maxSize 
});

此代码正在运行,我只想上传pdf文件。此代码将检查扩展名,但是如果我将任何其他文件的扩展名更改为pdf,它将允许它。我将获得mimetype中的application / pdf,但实际文件中不是pdf。我已经尝试过file-type,但是我的文件对象中没有任何缓冲区字段,那么如何验证呢?

我已经阅读了这些链接,但无法正常工作

https://github.com/expressjs/multer/issues/114

stop the file upload in multer if the user validation fails

0 个答案:

没有答案