Spring MVC,带有其他字段的上传文件


问题内容

我正在尝试构造用于使用其他一些表单字段上传文件的方法。

这是带有文件和其他一些字段的标准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表单,而不是Spring表单标签,例如<form:form ...>etc

这是我的控制器方法:

@ResponseBody
public MyDto createProduct(@RequestBody MyDto dto, @RequestParam MultipartFile file) {

}

但是我遇到了错误:Required request body content is missing

我应该如何构造我的Web方法以接收文件以及DTO对象作为参数?如果我可以将MultipartFile对象包含在中,那也很好MyDto


问题答案:

发生问题是因为绑定第一个参数的值时消耗了您的身体,通过省略d的注释,框架将实例化并从请求值中填充匹配属性

  @ResponseBody
  public MyDto createProduct(MyDto dto, @RequestParam MultipartFile file) {

  }

还要注意,您可以将类型为 MultipartFile文件 属性添加到 MyDto 实例,它也会实例化并正确绑定,因此

@ResponseBody
public MyDto createProduct(MyDto dto) {

}