Как я могу получить метаданные изображения в multer-s3-transform? - PullRequest
0 голосов
/ 04 марта 2020

Я пытаюсь использовать метаданные для условного изменения размера изображения с резким, исходя из его ширины и высоты.

Это работает в моем приложении CLI:

для (const файл файлов) { //console.log (path.join (process.cwd (), targetDirectory, file));

  const processedFile = path.join(process.cwd(), targetDirectory, file);
  const metadata = await sharp(processedFile).metadata();

  if (metadata.width > metadata.height) {
    await sharp(processedFile)
      .rotate()
      .resize(1200, null)
      .toFormat("jpg")
      .jpeg({ quality: 90 })
      .toFile(path.join(process.cwd(), file));
  } else {
    await sharp(processedFile)
      .rotate()
      .resize(null, 1200)
      .toFormat("jpg")
      .jpeg({ quality: 90 })
      .toFile(path.join(process.cwd(), file));
  }
}
console.log(chalk.green("Files successfully resized"));

Я пытаюсь добиться того же поведения на реальном веб-сервере, комбинируя его с multer и Загрузка s3 с использованием multer-s3-transform:

transform: function(req, file, cb) {
          cb(
            null,
            sharp()
              .rotate()
              .resize(1200, null)
              .toFormat("jpg")
              .jpeg({ quality: 90 })
          );
        }

Это работает, но я понятия не имею, как использовать метод metadata(), поскольку я не передаю явно файл в точном экземпляре.

Все, что я пытался вызвать ошибку dest.on is not a function.

Есть идеи, как этого добиться?

...