Node.js - загрузка файла с помощью multer и прикрепление файла к электронной почте с использованием Sendgrid - PullRequest
0 голосов
/ 08 ноября 2019
const multer  = require('multer');
const storage = multer.memoryStorage();
const upload = multer({ storage: storage }).single('attachment');

// sgMail intialization

exports.sendMail = (req, res) => {
  upload(req, res, err => {
    if(!err) {
      const fileInfo = req.file;
      const msg = {
        to: 'toemail@gmail.com',
        from: 'fromemail@gmail.com',
        subject: 'Welcome!',
        html: `<p>Some text description</p>`,
        attachments: [
          {
            content: fileInfo.buffer.toString('base64'),
            filename: fileInfo.key,
            type: 'text/plain',
            disposition: 'attachment'
          },
        ],
      };
      sgMail.send(msg)
        .then(() => {
          res.json({data: 'success});
        })
        .catch((err) => {
          res.json({data: 'error'});
        });
     }
  });
}

Ошибка: 'fileInfo' не определена и, следовательно, выдает следующую ошибку:

TypeError: Cannot read property 'buffer' of undefined

Запросы:

  1. Заголовок Content-Type не установлен. Если необходимо, какое должно быть значение?
  2. Что-то не так с реализацией мультитера

1 Ответ

0 голосов
/ 08 ноября 2019

const fileInfo = req.file; должно быть const fileInfo = req.files; (множественное число).

Вывести содержимое req.files, так как вам, скорее всего, придется указывать индекс массива или имя ключа вашей загрузки.

...