【问题标题】:How to validate different file types in multer s3?如何在 multer s3 中验证不同的文件类型?
【发布时间】:2021-10-11 19:42:58
【问题描述】:

我想处理和验证来自 multer 的视频和图像文件。Multer 中间件可以有 1 个视频文件和 10 个图像。我想验证它是否只有 10 个图像和 1 个视频文件。我还想验证文件大小。我希望视频有 25mb,图像有 5mb。但限制选项只需要一个文件大小。这里验证 5mb 文件。我如何验证视频,应该是 25mb。

const multerS3 = require('multer-s3');
const multer = require('multer');
const AWS = require('aws-sdk');

const s3 = new AWS.S3({
  accessKeyId: process.env.ACCESS_KEY_ID,
  secretAccessKey: process.env.SECRET_ACCESS_KEY,
  region: process.env.REGION
});

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

const middleware = function(req, res, next) {
  let upload = multer({
    storage: multerS3({
      s3: s3,
      bucket: process.env.BUCKET_NAME,
      acl: 'public-read',
      cacheControl: 'max-age=31536000',
      contentType: multerS3.AUTO_CONTENT_TYPE,
      metadata: function(req, file, cb) {
        // console.log('in callback');
        cb(null, { fieldName: file.fieldname });
      },
      key: function(req, file, cb) {
        // console.log('in callback 2');
        cb(null, Date.now().toString() + '-' + file.originalname);
      }
    }),
    fileFilter: fileFilter,
    limits: {
      fileSize: 1024 * 1024 * 5
    }
  }).fields([
    { name: 'images', maxCount: 10 },
    { name: 'video', maxCount: 1 }
  ]);

  upload(req, res, function(err) {
    console.log(err);
    next();
  });
};

module.exports = middleware;

【问题讨论】:

  • 您在 fileFilter 中的注释代码有什么问题?我认为它应该工作。
  • @turivishal 我想验证视频应该只包含视频,而图像只包含图像。我还希望视频大小为 25mb,图像大小为 5mb。

标签: javascript node.js amazon-s3 multer multer-s3


【解决方案1】:

目前multer不支持,

您可以关注 GitHub 上的讨论了解更多详情:

issue-569,
issue-833,
issue-314

【讨论】:

    猜你喜欢
    • 2018-11-11
    • 2021-04-24
    • 2021-04-08
    • 2017-01-06
    • 1970-01-01
    • 2020-06-10
    • 2014-07-14
    • 2021-01-08
    • 2010-09-09
    相关资源
    最近更新 更多