В моем Spring Boot API я создаю конечную точку для изменения фотографии обложки. Я отправляю файл с некоторыми данными из внешнего интерфейса как ChangeCoverRequest
объект. Однако при отправке запроса Spring Boot выдает следующую ошибку .
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: невозможно
построить экземпляр
org.springframework.web.multipart.MultipartFile
(без создателей, как
конструкция по умолчанию, существует): абстрактные типы либо должны быть сопоставлены
конкретные типы, имеют собственный десериализатор или содержат дополнительный тип
информация
Я знаю, что поле private MultipartFile cover
является причиной этой ошибки, но я не знаю, как построить ChangeCoverRequest
таким образом, чтобы эта ошибка не выкидывалась.
Заранее спасибо.
ChangeCoverRequest
public class ChangeCoverRequest {
private Long userId;
private Long groupId;
private MultipartFile cover;
public ChangeCoverRequest() {
}
public ChangeCoverRequest(Long userId, Long groupId, MultipartFile cover) {
super();
this.userId = userId;
this.groupId = groupId;
this.cover = cover;
}
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public Long getGroupId() {
return groupId;
}
public void setGroupId(Long groupId) {
this.groupId = groupId;
}
public MultipartFile getCover() {
return cover;
}
public void setCover(MultipartFile cover) {
this.cover = cover;
}
}
изменить конечную точку крышки
@PostMapping("/group/change-cover")
public void changeGroupCoverPhoto(@RequestBody ChangeCoverRequest changeCovReq) {
String fileName = fileService.storeFile(changeCovReq.getCover());
String fileDownloadUri = ServletUriComponentsBuilder.fromCurrentContextPath()
.path("/api/downloadFile/")
.path(fileName)
.toUriString();
UploadFileResponse response = new UploadFileResponse(fileName, fileDownloadUri,
changeCovReq.getCover().getContentType(), changeCovReq.getCover().getSize());
Group group = groupService.getGroup((long)changeCovReq.getUserId()).get();
group.setCoverPhoto(response.getFileDownloadUri());
groupRepository.save(group);
}