Backend/Spring
[Spring]게시글 사진 업로드기능 구현(MultipartHttpServletRequest)
Chung-A
2020. 7. 16. 20:52
[Spring]게시글 사진 업로드기능 구현(MultipartHttpServletRequest)
Spring 프로젝트를 개발하면서 게시판 기능을 만들던 중
프론트에서 전달된 이미지 파일을 받아서 서버에 저장해야 하는 경우가 생겼습니다.
앱에서 서버로 MultipartHttpServletRequest를 이용하여 request에 이미지 파일을 붙여서 요청을 보내주면
서버에서 이미지를 아래와 같은 코드로 받아서 처리하였습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
@RequestMapping(value="/image.do",method=RequestMethod.POST)
public @ResponseBody Integer insertBoardInfo(HttpServletRequest request)
{
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
MultiValueMap<String, MultipartFile> files = multipartRequest.getMultiFileMap();
Iterator<Map.Entry<String, List<MultipartFile>>> iter = files.entrySet().iterator();
List<MultipartFile> multipartFileList = new ArrayList<>();
while(iter.hasNext()){
Map.Entry<String, List<MultipartFile>> entry = iter.next();
List<MultipartFile> fileList = entry.getValue();
for (MultipartFile file : fileList) {
if(file.isEmpty()) continue;
multipartFileList.add(file);
}
}
//이후 받은 multipartFileList를 서버에 저장하는 로직 구현. //... return cnt;
}
|
cs |
구체적인 과정은 다음과 같습니다
1. 요청이 들어오면 HttpServletRequest를 MultipartHttpServletRequest로 암시적 형변환
2. multipartRequest에서 MultiValueMap과 Iterator를 이용하여 각 Multipart 파일들을 꺼내고 최종적으로 List<MultipartFile>형태로 변환
이렇게 해서 만들어진 List<MultipartFile>을 서버의 경로에 저장시켜두었다가
나중에 요청이 들어오면 저장되었던 사진 경로로 찾아 들어가서 반환해주는 방식으로
게시판의 사진 업로드 기능을 구현하였습니다