java - 带有 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
解决方案
您可以像这样在 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 个文件。
这是邮递员请求示例:
推荐阅读
- c++ - 由于 alpha 值,将一张图像混合到另一张图像会产生不正确的图像
- actionscript-3 - AS3扩展圆形时如何创建多种颜色?
- javascript - 停止变量干扰/变量范围
- ngxs - 将 NGSX 与路由器插件模块一起使用
- ceylon - 在不涉及 Null 的情况下满足 'Iterable' 接口
- wordpress - 视觉作曲家和用户角色问题
- forms - 我面临 Laravel 集体/html 类表单未找到错误
- javascript - 动态创建输入并检索其值以通过 Ajax 请求发送
- ruby - 优雅关闭 amqp(和/或)http 守护进程,(以及关于全局变量)
- nidaqmx - libnipalu.so 未能初始化所有 NI 相关命令的错误