我正在尝试使用其他一些表单字段构建上传文件的方法。
这是包含文件和其他一些字段的标准Html表单:
<form action="products" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="text" name="name">
<input type="text" name="email">
<input type="submit" value="Upload" name="submit">
</form>
请注意:我想使用标准HTML表单,而不是像<form:form ...>
等
这是我的控制器方法:
@ResponseBody
public MyDto createProduct(@RequestBody MyDto dto, @RequestParam MultipartFile file) {
}
但我收到错误:Required request body content is missing
。
我应该如何构建我的Web方法来接收文件以及DTO对象作为参数?如果我可以在MyDto
中包含MultipartFile对象,那也很好。
答案 0 :(得分:14)
您的问题发生导致在绑定第一个参数的值时消耗您的身体,通过省略框架将实例化的注释,并从请求值填充匹配的属性
@ResponseBody
public MyDto createProduct(MyDto dto, @RequestParam MultipartFile file) {
}
另请注意,您可以将 MultipartFile 类型的文件属性添加到 MyDto 实例中,它也会实例化并正确绑定,所以只是
@ResponseBody
public MyDto createProduct(MyDto dto) {
}