여러개 파일 전송 - eunja511005/Tutorial GitHub Wiki

Client Side

- form 태그안에 아래와 같이 type="file", name="yfiles", multiple 속성 주면 됨
  (name은 전송될 파일 이름)
    <div class="form-group">
        <label for="file">Select files:</label>
        <input type="file" name="yfiles" id="file" accept="image/jpeg, image/png" multiple />
    </div>
- script
    var formData = new FormData($(this)[0]);
- 전송되는 Payload를 보면 모두 yfiles라는 이름으로 파일들이 전송되고 있음

image

image

image

image

Server Side

- 파일과 유저 정보 모두 MultipartHttpServletRequest 여기 안에 들어 있지만 꺼내기 쉽게 유저 정보는 DTO로 받음
  . 파일 데이터 꺼낼 곳 : MultipartHttpServletRequest multipartFiles
  . 유저 데이터 꺼낼 곳 : UserInfoDTO userInfoDTO
- 파일들은 모두 이름이 yfiles로 동일하게 오므로 아래와 같이 리스트로 꺼내도 됨
  . List<MultipartFile> multipartFilesList = multipartFiles.getFiles("yfiles");	
- 하지만 나중에 이름이 다르게 올때를 대비해서 아래과 같이 범용적으로 구현
  . Iterator<String> fileNames = multipartFiles.getFileNames();
  . while (fileNames.hasNext()) {
  . List<MultipartFile> multipartFilesList = multipartFiles.getFiles(fileName);
- 실제 파일은 리스트에서 MultipartFile 형태로 꺼내면 
  . for (MultipartFile multipartFile : multipartFilesList) {

image

image

⚠️ **GitHub.com Fallback** ⚠️