首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >穆特: fileFilter不工作

穆特: fileFilter不工作
EN

Stack Overflow用户
提问于 2018-02-12 10:37:37
回答 3查看 5.6K关注 0票数 6

我在用穆特上传文件。一切都很好,但fileFilter不起作用。我不知道我哪里出了问题。

routes.js

代码语言:javascript
运行
复制
var multer = require('multer');
// Multer diskStorage setting
var storage = multer.diskStorage({
  destination: function (req, file, callback) {
    callback(null, './uploads/');
  },
  filFilter: function (req, file, cb) {
    var typeArray = file.mimetype.split('/');
    var fileType = typeArray[1];
    if (fileType == 'jpg' || fileType == 'png') {
      cb(null, true);
    } else {
      cb(null, false)
    }
  },
  filename: function (req, file, callback) {
    callback(null, file.fieldname + '_' + Date.now() + '.jpg');
  }
});

var upload = multer({ storage: storage });
router.post('/add', upload.single('photo'), function(req, res){

    console.log('uploaded');
}

穆特还上传了不允许的文件。有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-05-10 14:48:42

fileFilter必须用穆特的options对象而不是diskStorage来定义

代码语言:javascript
运行
复制
const uploadFilter = function(req, file, cb) {
    // filter rules here
}

const upload = multer({
    storage: storage,
    fileFilter: uploadFilter,
});
票数 5
EN

Stack Overflow用户

发布于 2019-01-02 11:15:42

代码语言:javascript
运行
复制
const storage = multer.diskStorage({
    destination: function (req, file, callback) {
        callback(null, './uploads/');
    },
    fileFilter: function (req, file, cb) {
        const extension = path.extname(file.originalname).toLowerCase();
        const mimetyp = file.mimetype;
        if (
            extension !== '.jpg' ||
            extension !== '.jpeg' ||
            extension !== '.png' ||
            mimetyp !== 'image/png' ||
            mimetyp !== 'image/jpg' ||
            mimetyp !== 'image/jpeg'
        ) {
            cb('error message', true);
        }
    },
    filename: function (req, file, callback) {
        callback(null, file.fieldname + '_' + Date.now() + '.jpg');
    },
});

const upload = multer({ storage: storage });
router.post('/add', upload.single('photo'), function (req, res) {
    console.log('uploaded');
});

我想这会有帮助的

票数 7
EN

Stack Overflow用户

发布于 2018-05-30 08:57:00

在您的fileFilter上有一个错误;您已经将它命名为filFilter。你能把你的代码改为下面的代码并告诉我们它是否成功了吗?

代码语言:javascript
运行
复制
var multer = require('multer');
// Multer diskStorage setting
var storage = multer.diskStorage({
  destination: function (req, file, callback) {
    callback(null, './uploads/');
  },
  fileFilter: function (req, file, cb) {
    var typeArray = file.mimetype.split('/');
    var fileType = typeArray[1];
    if (fileType == 'jpg' || fileType == 'png') {
      cb(null, true);
    } else {
      cb(null, false)
    }
  },
  filename: function (req, file, callback) {
    callback(null, file.fieldname + '_' + Date.now() + '.jpg');
  }
});

var upload = multer({ storage: storage });
router.post('/add', upload.single('photo'), function(req, res){

    console.log('uploaded');
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48744421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档