我正在尝试使用Spring Boot @RestController
上传文件:
@RequestMapping(value = "/register", method = RequestMethod.POST)
public AppResponse registerUserFromApp(
@RequestBody UserInfo userInfo,
@RequestParam(value = "file", required = false) CommonsMultipartFile file,
@RequestParam(value = "inviteCode", required = false) String inviteCode){
有了这个定义,我尝试了这个邮递员的请求:
这行不通。
我尝试将其添加到我的
RequestMapping
中:@RequestMapping(value = "/register", method = RequestMethod.POST, consumes = "multipart/form-data")
这给了我同样的错误。
对于
userInfo
,我将按照another SO answer的建议在表单数据字段本身中将值作为JSON发送。不起作用,同样的错误。正如其他一些答案中所建议的那样,我还确保我没有在Postman中发送任何标头。
我也尝试在
application.properties
中添加以下属性:spring.http.multipart.enabled=false
同样的错误。我也尝试使用
MultipartFile
代替CommonsMultipartFile
,完全没有区别。我究竟做错了什么?我也想在请求中将图像作为File和
UserInfo
对象发送。邮递员的例子将不胜感激。 最佳答案
具有自定义对象的多部分表单数据将被接受为字符串。因此您的控制器将如下所示。
@RequestMapping(value = "/register", method = RequestMethod.POST)
public AppResponse registerUserFromApp(
@RequestBody String userInfo,
@RequestParam(value = "file", required = false) CommonsMultipartFile file,
@RequestParam(value = "inviteCode", required = false) String inviteCode){
ObjectMapper obj=new ObjectMapper();
UserInfo userInfo=obj.readValue(clientData, UserInfo.class);
}
您将必须使用ObjectMapper将String转换为pojo。希望这会有所帮助。