Spring MVC,上传文件与其他字段

MyT*_*tle 12 spring file-upload 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>
Run Code Online (Sandbox Code Playgroud)

请注意:我想使用标准的HTML表单,而不是像Spring <form:form ...>等标签

这是我的控制器方法:

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

}
Run Code Online (Sandbox Code Playgroud)

但我得到错误:Required request body content is missing.

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

Mas*_*ave 14

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

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

  }
Run Code Online (Sandbox Code Playgroud)

另请注意,您可以将类型为MultipartFile文件属性添加到MyDto实例中,它也会实例化并正确绑定,所以

@ResponseBody
public MyDto createProduct(MyDto dto) {

}
Run Code Online (Sandbox Code Playgroud)