首页 > 解决方案 > 弹簧柱多部分和主体

问题描述

我正在尝试上传一个运行良好的文件,该方法如下所示:

    @PostMapping("/upload")
    public FileResponse uploadFile(@RequestPart("file") MultipartFile file) {
...

但是当我尝试在它旁边上传另一个 json 时,它会出错:

   @PostMapping("/upload")
    public FileResponse uploadFile(@RequestPart("file") MultipartFile file, @RequestBody UserDTO userDTO) {
...

我需要 UserDTO 来验证用户。

这是我的邮递员快照:

奥迪

标签: springspring-bootspring-mvc

解决方案


对于多部分请求,您将无法在同一控制器中同时获取 RequestBody 和 RequestPart。我使用的解决方法是将对象作为字符串发送并将其转换回控制器中的对象。例如。以下:

@PostMapping(value = "/upload", consumes = {"multipart/form-data"})
public ResponseEntity<Object> upload(
        @RequestParam(required = false, value = "document") MultipartFile document,
        @Valid @RequestParam("userDTOString") String userDTOString) throws JSONException {

    UserDTO userDTO = new ObjectMapper().readValue(userDTOString, UserDTO.class);
    return documentService.uploadFile(document, userDTO);
}

推荐阅读