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