spring - 弹簧柱多部分和主体
问题描述
我正在尝试上传一个运行良好的文件,该方法如下所示:
@PostMapping("/upload")
public FileResponse uploadFile(@RequestPart("file") MultipartFile file) {
...
但是当我尝试在它旁边上传另一个 json 时,它会出错:
@PostMapping("/upload")
public FileResponse uploadFile(@RequestPart("file") MultipartFile file, @RequestBody UserDTO userDTO) {
...
我需要 UserDTO 来验证用户。
这是我的邮递员快照:
解决方案
对于多部分请求,您将无法在同一控制器中同时获取 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);
}
推荐阅读
- scala - 如何在 Scala 中进行 Monadic 日志记录
- android - Firebase 和 Socket.io 兼容性问题使我的应用程序崩溃
- javascript - JSON Parse 错误:React Native Expo 中出现意外的 EOF
- matlab - 是否可以检查重载 eq 的类的句柄相等性?
- python - 操作数据框结构的有效方法?
- python - 具有相同输入的递归函数给出不同的输出
- python - for 循环内的图例
- python - Python 和 SQL Anywhere 17 出现“无法加载 dbcapi”问题
- android - 尝试在现有的 Flutter 应用中实现 flutter_contacts 示例
- docker - 如何阻止对docker上特定端口的访问