[NodeJs]:: Multer : 멀티파트 파일 업로드

Darcy Daeseok YU ·2023년 6월 10일
0

Multer : 이미지, 동영상 등을 비롯한 여러 가지 파일을 멀티파트 형식으로 업로드할 때 사용하는 미들웨어

멀타파트 형식이란? enctype이 multipart/form-data인 폼을 통해서 업로드하는 데이터의 형식

폼으로 데이터 전송

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

이러한 폼을 통한 업로드는 body-parser로 처리 불가해서 직접 파싱도 어려움

  1. input tag 1개 name 1개 + 파일1개 업로드
    const inputNm = "image"
    app.post("/upload", upload.single(inputNm), (req, res) => { })
 <form action="/upload" method="post" enctype="multipart/form-data">
  <input type="file" name="image" /> //첨부파일 1개 
  
      <input type="text" name="title" />
      <button type="submit">업로드</button>
    </form>

req.file에 파일 1개
req.body에 타이틀 값

  1. input tag 1개 name 1개 + 파일 여러개 multiple 업로드

const inputNm = "images"
app.post("/upload", upload.array(inputNm), (req, res) => { })

 <form action="/upload" method="post" enctype="multipart/form-data">
  	  <input type="file" name="images" multiple /> //같은 태그 첨부파일 여러개
  
      <input type="text" name="title" />
      <button type="submit">업로드</button>
    </form>

req.files에 파일 어레이
req.body에 타이틀 값

  1. input tag 여러개 name 여러개 + 파일 여러개 각각 업로드

const inputNm =[{name: "image1"}, {name: "image2"}]
app.post("/upload", upload.array(inputNm), (req, res) => { })

 <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>

req.files.image1 [] / image2 [] 각각에 어레이안에 파일
req.body에 타이틀 값

  1. 파일 업로드 태그 없는 경우
    app.post("/upload", upload.none(), (req, res) => {})
    req.body객체에 값이 담김
profile
React, React-Native https://darcyu83.netlify.app/

0개의 댓글