Multer, как запретить загрузку файлов большого размера?

Сколько бы не пытался, что бы не делал, в любом случае он сначала докачивает полностью файл (хоть 50гб.), а только потом проверяет размер и расширение (и удаляет, как в моем примере)
multer({
  dest: './upload/',
  limits: {
    fileSize: 3*1024*1024
  },
  onFileUploadData: function(file, req, res) {
    if (file.size > 1024*1024*3) {
      return false; // Если файл не картинка, то file - вообще не выводиться, соответственно и размер не проверить
      console.log('limit');
    }
  },
  onFileUploadStart: function (file, req, res) {
    console.log('Upload started');
    var mime = file.mimetype;
    if (mime != 'image/jpeg' && mime != 'image/png') {
      res.end('Неправильный тип файла.');
      return false;
    }
  },
  onFileSizeLimit: function (file) {
    console.log('Failed: ', file.originalname);
    fs.unlink('./' + file.path);
  },
  onFileUploadComplete: function (file, req, res) {
    res.end('file uploaded');
    console.log('uploaded');
  }

});


Что я делаю не так? Или как можно решить эту проблему без multer?
  • Вопрос задан
  • 562 просмотра
Решения вопроса 1
@Stopy Автор вопроса
в комментариях к вопросу человек подсказал перед началом загрузки проверять content-length, а потом уже парсить файл
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы