실제로 multer 예제를 실습하고 싶다면 app.js를 다음과 같이 수정합니다. multipart.html도 되돌립니다.

    app.js

    ...
        httpOnly: true,
        secure: false,
      },
      name: 'session-cookie',
    }));
    
    const multer = require('multer');
    const fs = require('fs');
    
    try {
      fs.readdirSync('uploads');
    } catch (error) {
      console.error('uploads 폴더가 없어 uploads 폴더를 생성합니다.');
      fs.mkdirSync('uploads');
    }
    const upload = multer({
      storage: multer.diskStorage({
        destination(req, file, done) {
          done(null, 'uploads/');
        },
        filename(req, file, done) {
          const ext = path.extname(file.originalname);
          done(null, path.basename(file.originalname, ext) + Date.now() + ext);
        },
      }),
      limits: { fileSize: 5 * 1024 * 1024 },
    });
    app.get('/upload', (req, res) => {
      res.sendFile(path.join(__dirname, 'multipart.html'));
    });
    
    app.post('/upload', upload.single('image'), (req, res) => {
      console.log(req.file);
      res.send('ok');
    });
    
    app.get('/', (req, res, next) => {
      console.log('GET / 요청에서만 실행됩니다.');
    ...

    multipart.html

    <form id="form" action="/upload" method="post" enctype="multipart/form-data">
      <input type="file" name="image1" />
      <input type="file" name="image2" />
      <input type="text" name="title" />
      <button type="submit">업로드</button>
    </form>

    localhost:3000/upload에 접속해서 실습하면 됩니다.

    지금까지 자주 쓰이는 미들웨어를 알아봤습니다. 다른 미들웨어는 사용할 때 소개하겠습니다.

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.