Как отправить MultipartFile в DTO в SpringBoot с React js - PullRequest
0 голосов
/ 23 февраля 2020

Я пытаюсь добавить файл изображения в форму с некоторыми другими входными данными,

Это то, что я следовал в реакции (FrontEnd):

handleAddBtnClick=(e)=>{
    e.preventDefault();
    const data = new FormData() 
    data.append('file', this.state.selectedFile,this.state.selectedFile.name)

    let obj={
        name:name,
        price:price,
        image:data,
        quantity:quantity,
        shortDesc:shortDesc,
        longDesc:longDesc,
    }
    this.props.addCraftActions.addCraft(obj)
}

И отправлено как post request

Пружинная загрузка Контроллер реализован следующим образом:

@RequestMapping(value = "/add",method = RequestMethod.POST,consumes = {MediaType.MULTIPART_FORM_DATA_VALUE,MediaType.APPLICATION_JSON_VALUE})
    public ResponseEntity<?> addCraftItem(@RequestHeader(value = "Authorization") String token, @RequestBody ItemDTO dto) throws Exception {
    return ResponseEntity.ok(craftItemService.addItem(dto));
}
@Getter
@Setter
public class ItemDTO implements Serializable {
    private long craftId;

    private String ciName;

    private boolean availabilityStatus;

    private double ciPrice;

    private MultipartFile imgFile;

    private int itemQuantity;

    private String shortDescription;

    private String longDescription;

И я получаю следующее исключение

com.faster xml. jackson.databind.ex c .InvalidDefinitionException: Невозможно создать экземпляр org.springframework.web.multipart.MultipartFile (создатели, такие как конструкция по умолчанию, не существуют): абстрактные типы либо должны быть сопоставлены с конкретными типами, либо иметь собственный десериализатор, либо содержать дополнительную информацию о типах

И я хотел бы знать, как я могу это исправить. Любая помощь ценится.

...