일단 consumes = {MediaType.MULTIPART_FORM_DATA_VALUE} 을 컨트롤러 api에 선언해줘야지 스웨거에서 파일을 올릴수있는 버튼이 생긴다.
@PostMapping(value = "/join", consumes = {MediaType.MULTIPART_FORM_DATA_VALUE})
그렇게 실행하면 이젠 버튼은 생겼지만 이런 에러 메세지가 뜨는데
HttpMediaTypeNotSupportedException: Content-Type 'application/octet-stream' is not supported
라고 뜨는데 이건 스웨거가 사진을 MULTIPART_FORM_DATA_VALUE로 보내야 하는데 application/octet-stream으로 보내버린거라서 config패캐지에 MultipartJackson2HttpMessageConverter를 만들어주면 된다.

package com.PizzaKoala.Pizza.global.config;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.http.MediaType;
import org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter;
import org.springframework.stereotype.Component;
import java.lang.reflect.Type;
@Component
public class MultipartJackson2HttpMessageConverter extends AbstractJackson2HttpMessageConverter {
public MultipartJackson2HttpMessageConverter(ObjectMapper objectMapper) {
super(objectMapper, MediaType.APPLICATION_OCTET_STREAM);
}
@Override
public boolean canWrite(Class<?> clazz, MediaType mediaType) {
return false;
}
@Override
public boolean canWrite(Type type, Class<?> clazz, MediaType mediaType) {
return false;
}
@Override
protected boolean canWrite(MediaType mediaType) {
return false;
}
}
📌 한 줄 요약
스웨거가 application/octet-stream으로 파일을 보내서 Spring이 이해를 못 한 게 원인.
→ MultipartJackson2HttpMessageConverter 추가해서 application/octet-stream을 무시하게 만들어 해결! 😎✨
오버라이딩되거 다 false로 하면 application/octet-stream가 무시되서 multipart/form-data를 사용하게 된다.