我正在尝试构造用于使用其他一些表单字段上传文件的方法。
这是带有文件和其他一些字段的标准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 ...>
等的Spring表单标签这是我的 Controller 方法:
@ResponseBody
public MyDto createProduct(@RequestBody MyDto dto, @RequestParam MultipartFile file) {
}
但是我遇到了错误:
Required request body content is missing
。我应该如何构造我的Web方法以接收文件以及DTO对象作为参数?如果我可以在
MyDto
中包含MultipartFile对象,那也很好。 最佳答案
发生问题是因为绑定(bind)第一个参数的值时您的 body 被消耗了,通过省略d的注释,框架将实例化并从请求值中填充匹配属性
@ResponseBody
public MyDto createProduct(MyDto dto, @RequestParam MultipartFile file) {
}
还要注意,您可以将类型为MultipartFile的文件属性添加到MyDto实例,它也会实例化并正确绑定(bind),因此
@ResponseBody
public MyDto createProduct(MyDto dto) {
}