Я пытаюсь взять объект Json из интерфейса. Это представляет собой курс. У курса есть полевая эмблема, изображение курса. В моем контроллере у меня есть следующий метод:
@PostMapping(value="/register-course", consumes = "multipart/form-data" )
public Response courseCreated(@RequestBody @Valid CourseCreatedRequest courseCreatedRequest, @RequestPart(value = "logo") MultipartFile file) throws IOException {
return Response.ok().setPayload(registerCours(courseCreatedRequest, file));
}
private CourseDto registerCours(CourseCreatedRequest courseCreatedRequest, MultipartFile file) throws
IOException {
CourseDto courseDto = new CourseDto()
.setCourseName(courseCreatedRequest.getCourseName())
.setCourseDescription(courseCreatedRequest.getCourseDescription())
.setCoursePrice(courseCreatedRequest.getCoursePrice())
.setIsCourseActive(courseCreatedRequest.getIsCourseActive())
.setIsCourseFree(courseCreatedRequest.getIsCourseFree())
.setLogo(file.getBytes());
return courseService.createNewCourse(courseDto);
}
На уровне обслуживания у меня есть логика для сжатия (при сохранении изображения в БД) и распаковки (при рендеринге изображения обратно в fend):
@PrePersist
public CourseDto createNewCourse(CourseDto newCourseDto) {
Courses course = courseRepositoryDao.findByCourseName(newCourseDto.getCourseName());
if (course == null) {
course = new Courses()
.setCourseName(newCourseDto.getCourseName())
.setCourseDescription(newCourseDto.getCourseDescription())
.setCoursePrice(newCourseDto.getCoursePrice())
.setIsCourseFree(newCourseDto.getIsCourseFree())
.setIsCourseActive(newCourseDto.getIsCourseActive())
.setLogo(compressZLib(newCourseDto.getLogo()))
;
return CourseMapper.toUserDtoFreeCourses(courseRepositoryDao.save(course));
}
throw exception(EntityType.NEWCOURSE, ExceptionType.DUPLICATE_ENTITY, newCourseDto.getCourseName());
}
Когда я отправляю JSON с полем логотипа в виде файла изображения через POSTMAN, я получаю ошибку 415 - неподдерживаемый тип носителя.
Где я не прав? Я думаю, что мне нужно сменить контроллер, но как? Мне нужно как-то взять изображение из JSON с классом MultipartFile?
Обновление: я отправил JSON и файл в теле, и я думаю, что это проблема. Мне нужно поместить MultipartFile в контроллер.
У меня есть другие ответы и все еще ошибка 415. В почтальоне я оставил Content-Type без значения.