首页 > 解决方案 > 带有 json Body 和多部分文件数组的 PUT 请求

问题描述

我有一个使用 PUT 方法更新员工的 rest java webservice。

Web 服务应该获取一个文件列表和一个包含要更新的信息的 json。

该方法具有以下签名

@RequestMapping(value = "/employees/{employeeId}", method = RequestMethod.PUT, consumes = 
 MediaType.MULTIPART_FORM_DATA_VALUE)
public ResponseEntity<?> updateEmployee(
         @RequestPart EmployeeUserUpdateDto employeeDto,
         @PathVariable("employeeId") int employeeId,
         @RequestPart MultipartFile[] uploadedFiles, BindingResult bindingResult)

当我像下面这样用邮递员测试这个请求时,它说我的 json 不存在:

在此处输入图像描述

PS:我有一个类似的添加员工的发布请求,使用相同的配置工作得很好,两个请求之间的唯一区别是路径变量并且 PUT 不是 POST

标签: javarestspring-bootpostman

解决方案


您可以像这样在 dto 包装器中获取多部分请求:

@PutMapping("/upload-poc")
  ResponseEntity<?> uploadFileWithData(@ModelAttribute TestModel model){
    log.info("File Exist: {}",model.getImage().get(0).getOriginalFilename());
    log.info("Data: {}", model);
    return new ResponseEntity<>(HttpStatus.OK);
  }


@Getter
@Setter
@ToString
class TestModel{
  private List<MultipartFile> images;

  //@NotNull(message = "Name must be provided")
  @Size(min = 2, max = 6)
  private String name;

  private Long id;
}

我在一个请求中上传 3 个文件。

这是邮递员请求示例:

在此处输入图像描述


推荐阅读