티스토리 뷰
Backend/Spring Framework
[Spring Boot] 컨트롤러에서 Multipart/form-data 처리 방법과 유의점
mopil 2022. 7. 26. 22:22반응형
서버에 파일이나 이미지를 업로드 하고 싶으면 Multipart/form-data 형식으로 HTTP 메시지를 작성해야한다.
다음은 몇 가지 주안점이다.
- Multipart/form-data 는 무조건 POST 요청으로 들어간다. 따라서 파일이나 이미지를 첨부한 update를 구현하고 싶으면 PUT 요청이 아닌 POST 요청으로 처리하자.
- Multipart/form-data는 @RequestBody가 아닌, @ModelAttribute로 받자.
만약,
Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'multipart/form-data;boundary=--------------------------651322644999616177014511;charset=UTF-8' not supported]
이런 오류가 발생한다면, Multipart/form-data를 @RequestBody로 받아서 발생하는 문제다. (JSON으로 변환을 못하기 때문)
# 이미지를 포함한 DTO를 받고 싶을 때
data class ItemCategoryRequest(
var categoryName: String = "",
var image: MultipartFile,
)
// 제품 카테고리 수정
@PostMapping("/item/{categoryId}")
fun updateItemCategory(
@PathVariable("categoryId") categoryId: Long,
@ModelAttribute form: ItemCategoryRequest)
= ItemCategoryListResponse(
categoryService.updateItemCategory(categoryId, form).map { convertItemDto(it) }
)
이렇게 @ModelAttribute로 받으면 된다.
반응형