使用Jackson将多部分文件从Angular反序列化为Java
我正在使用SpringBoot 1.5.9和Angular 5开发一个REST应用程序,我需要向SpringBoot后端发送一个REST请求,以便将一个对象保存到数据库中 在前端,用户填写表单并提交。以下是创建对象的接口,以便将对象作为REST调用发送到后端使用Jackson将多部分文件从Angular反序列化为Java,java,angular,spring-boot,jackson,Java,Angular,Spring Boot,Jackson,我正在使用SpringBoot 1.5.9和Angular 5开发一个REST应用程序,我需要向SpringBoot后端发送一个REST请求,以便将一个对象保存到数据库中 在前端,用户填写表单并提交。以下是创建对象的接口,以便将对象作为REST调用发送到后端 export class Item { public id:number; public name:string; public workDescription:string; public image:F
export class Item {
public id:number;
public name:string;
public workDescription:string;
public image:FormData;
public comment:string;
}
我正在使用模型映射器库将上述对象反序列化为Java中的以下类
@Getter
public class ItemDto {
private int id;
private String name;
private String workDescription;
private CommonsMultipartFile image;
private String comment;
}
这是我的控制器,它接收我从前端发送的对象:
@RequestMapping(value = "/items", method = RequestMethod.POST, consumes = { "application/json",
"multipart/form-data" }, produces = "application/json")
@ResponseBody
@Transactional
public ResponseEntity<String> createItem(@Valid @DTO(ItemDto.class) Item item,
@RequestParam(value = "work", required = true) String workId,
UriComponentsBuilder uriComponentsBuilder, final HttpServletRequest request) {
}
我试过好几种方法,但都没能成功。非常感谢你 因为
commonmultipartfile
没有Jackson转换它的默认构造函数。我会在声明的顶部添加@JsonIgnore
,以避免Jackson尝试反序列化。然后你就可以试着把文件放进去了。检查这个
@RequestMapping(value = "/items/images", method = RequestMethod.POST, headers = "content-type=multipart/form-data")
@Transactional
public ResponseEntity<?> uploadItemImage(@RequestParam("item") String itemId,
@RequestParam("file") MultipartFile multipartFile, UriComponentsBuilder uriComponentsBuilder) {
Some Implementation....
}