Node.jsでPDFをアップロードしてクライアントに送信する方法


  1. Express.jsを使用して基本的なWebサーバーをセットアップします。
const express = require('express');
const app = express();
// フォームデータの処理に必要なミドルウェアを追加します
const multer = require('multer');
const upload = multer({ dest: 'uploads/' });
app.use(express.static('public'));
app.post('/upload', upload.single('pdf'), (req, res) => {
  // ファイルのアップロードが完了したら、PDFを送信する処理を実装します
});
app.listen(3000, () => {
  console.log('サーバーがポート3000で起動しました');
});
  1. 上記のコードでは、multerライブラリを使用してファイルのアップロードを処理しています。upload.single('pdf')を使用して、1つのPDFファイルのみをアップロードするように指定しています。アップロードされたファイルはuploads/ディレクトリに保存されます。

  2. アップロードが完了した後、PDFをクライアントに送信する処理を実装します。これにはnodemailerライブラリを使用できます。以下は、基本的な例です。

const nodemailer = require('nodemailer');
app.post('/upload', upload.single('pdf'), (req, res) => {
  // アップロードされたファイルのパスを取得します
  const filePath = req.file.path;
  // nodemailerを使用してメールを送信します
  const transporter = nodemailer.createTransport({
    service: 'Gmail',
    auth: {
      user: '[email protected]',
      pass: 'your-password'
    }
  });
  const mailOptions = {
    from: '[email protected]',
    to: '[email protected]',
    subject: 'PDFファイルの送信',
    text: 'PDFファイルを添付して送信します。',
    attachments: [
      {
        filename: 'file.pdf',
        path: filePath
      }
    ]
  };
  transporter.sendMail(mailOptions, (error, info) => {
    if (error) {
      console.log('メールの送信に失敗しました:', error);
      res.status(500).send('メールの送信に失敗しました');
    } else {
      console.log('メールが送信されました:', info.response);
      res.status(200).send('メールが送信されました');
    }
  });
});
  1. 上記のコードでは、Gmailを使用してメールを送信する設定になっています。userpassを自分のGmailのアカウント情報に置き換えてください。また、toにはクライアントのメールアドレスを指定します。

これで、Node.jsを使用してPDFファイルをアップロードし、クライアントに送信する準備が整いました。適切なエラーハンドリングやセキュリティ対策を追加することも忘れないでください。