我正在开发一个spring mvc应用程序,我想在我的控制器中处理多部分请求。在请求中我也传递了MultiPartFile
,目前我正在使用@RequestParam
来获取文件参数,方法看起来像,
@RequestMapping(method = RequestMethod.POST)
public def save(
@ModelAttribute @Valid Product product,
@RequestParam(value = "image", required = false) MultipartFile file) {
.....
}
上面的代码在我的服务中运行良好,文件正在服务器端。现在在某个地方我看到,如果文件需要使用@RequestPart
注释而不是@RequestParam
。使用@RequestParam
文件有什么不对吗?或者将来可能会导致任何错误?
答案 0 :(得分:10)
将@RequestParam
与Multipart
文件一起使用并没有错。
@RequestParam注释也可用于关联a的一部分 "多部分/格式数据"请求带有支持的方法参数 相同的方法参数类型。主要区别在于 method参数不是String,@ RequestParam依赖于type 通过注册的Converter或PropertyEditor进行转换 @RequestPart依赖于HttpMessageConverters考虑 '内容类型'请求部分的标题。 @RequestParam很可能 在@RequestPart可能的情况下与名称 - 值表单字段一起使用 与包含更复杂内容的部分(例如JSON,XML)一起使用。
答案 1 :(得分:1)
可以使用两个注释,但是,您可以根据它们在内部解释参数的方式来选择它们。
Spring Docs非常清楚地说明了它们之间的区别:
主要区别在于当method参数不是String时,
@RequestParam
依赖于通过已注册的Converter转换类型或PropertyEditor
而@RequestPart
依赖于HttpMessageConverters
考虑到“内容类型”'请求部分的标题。@RequestPara
可能与名称 - 值表单字段一起使用,而@RequestPart
可能与包含更复杂内容的部分(例如JSON,XML)一起使用。