-
Json with MultipartFile프로젝트/미디어 스트리밍 서버 프로젝트 2022. 8. 19. 15:03728x90
개요
MultipartFile을 통해 S3에 저장하던 중 제목과 내용도 함께 저장해야 하는 요구사항을 처리하고자 했습니다.
가장 간단하게 든 생각으로 "DTO를 만들어서 처리하자"였습니다.
data class FileRequest( val subject : String, val content : String, val file : MultipartFile, ) { }
하지만 API를 호출하여 전달하려고 하는데 MultipartFile은 Json으로 어떻게 보내지?라는 생각이 들었습니다.
@RequestPart 활용하기
API에서 consume할 MediaType을 지정해주는 방식을 사용해서 하나의 API에서 Json과 MultipartFile을 한 번에 전달받을 수 있습니다.
@PostMapping(consumes = [MediaType.APPLICATION_JSON_VALUE, MediaType.MULTIPART_FORM_DATA_VALUE]) fun fileUpload(@RequestPart request : FileRequest, @RequestPart file : MultipartFile): String { return s3Service.upload(request, file) }
자연스럽게 FileRequest에서는 MultipartFile을 사용하지 않습니다.
Content type 'application/octet-stream' not supported 이라는 에러가 계속 발생하여 해당 구문을 추가하였지만 여전히 에러가 발생했습니다. MediaType.APPLICATION_OCTET_STREAM_VALUE
원인은 request 같이 Json으로 요청을 보내는 경우에는 CONTENT TYPE을 application/json 으로 명시해주어야 합니다.
... 을 누르고 Content Type을 체크하고 application/json 으로 명시해야 함!!
PostMan으로 테스트하기
Body -> form-data 선택
정상적으로 200 OK가 동작합니다.
출처
https://minholee93.tistory.com/entry/Spring-Json-with-MultipartFile
'프로젝트 > 미디어 스트리밍 서버 프로젝트' 카테고리의 다른 글
ffmpeg install (Mac OS, Amazon Linux) (0) 2022.08.22 JPA Paging 적용하기 (0) 2022.08.20 [Spring + Kotlin]Kotest와 MockK를 활용한 테스트 코드 작성 (0) 2022.08.19 ktlint와 Github Action을 활용한 CI (0) 2022.08.17 스트리밍 서버란? (0) 2022.08.16