Node Js Ошибка при загрузке на S3: ошибка типа [ERR_INVALID_ARG_TYPE] - PullRequest
0 голосов
/ 14 февраля 2020

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

TypeError [ERR_INVALID_ARG_TYPE]: первый аргумент должен быть одним из типов string, Buffer, ArrayBuffer, Array или Array-like Object.

Так что в основном я знаю, что должен поменять его на буфер, после некоторого поиска я попробовал несколько решений, но ни одно из них не работает, может кто-нибудь помочь мне указать, что я я ошибаюсь?

  const s3Client = s3.s3Client;
  const params = s3.uploadParams;

  //const fileContent = fs.readFileSync(req.file); <-- tried this and still gave the same error
  var fileContent = Buffer.from(req.file, 'base64')

  params.Key = req.file.filename
  params.Body = fileContent

  console.log(req.file)

  s3Client.upload(params, (err, data) => {
    if (err) {
      res.status(500).json({error:"Error -> " + err});
    }
    res.json({message: 'File uploaded successfully! -> keyname = ' + req.file.originalname});
  });

Это само изображение, может быть, я его неправильно конвертирую? Подробности взяты из журнала консоли req.file

{
  fieldname: 'image',
  originalname: 'Kimmi.jpg',
  encoding: '7bit',
  mimetype: 'image/jpeg',
  destination: './images/',
  filename: 'c6b46e20-4efc-11ea-8b6a-1b4d698f6335.jpeg',
  path: 'images\\c6b46e20-4efc-11ea-8b6a-1b4d698f6335.jpeg',
  size: 35920
}

1 Ответ

0 голосов
/ 14 февраля 2020

Я не совсем уверен, но я думаю, что вы используете multer? Если вы используете multer, вы можете в основном использовать req.file.buffer.

Мой совет - использовать поток вместо буфера, если изображения большие Пример потока

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...