[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>을 서버의 경로에 저장시켜두었다가
나중에 요청이 들어오면 저장되었던 사진 경로로 찾아 들어가서 반환해주는 방식으로
게시판의 사진 업로드 기능을 구현하였습니다
'Backend > Spring' 카테고리의 다른 글
ipTIME의 DDNS를 이용하여 운영 서버 구축하기(포트포워딩) (1) | 2020.10.30 |
---|---|
[Spring]빈 스코프(Bean Scope)의 종류 및 개념 (0) | 2020.10.27 |
[Spring]스프링 빈(Bean)을 초기화 및 종료하는 3가지 방법(Bean 생명주기 콜백) (0) | 2020.10.27 |
[Spring] 스프링의 빈(Bean) 생명주기 콜백의 개념 및 예제 (0) | 2020.10.24 |
[SpringBoot] ajax로 사진 업로드와 삭제, 썸네일 미리보기 기능 구현하기 (4) | 2020.07.30 |