我正在开发一个Spring MVC应用程序,我想在控制器中处理多部分请求。在我MultiPartFile 也传递的请求中,当前我正在使用@RequestParam获取文件参数,该方法看起来像,
MultiPartFile
@RequestParam
@RequestMapping(method = RequestMethod.POST) public def save( @ModelAttribute @Valid Product product, @RequestParam(value = "image", required = false) MultipartFile file) { ..... }
上面的代码在我的服务中效果很好,并且文件在服务器端。现在我在某处看到,在文件情况下,需要使用@RequestPart注释而不是@RequestParam。@RequestParam文件有什么用吗?还是将来可能导致任何类型的错误?
@RequestPart
@RequestParam与Multipartfile一起使用没错。
Multipart
@RequestParam批注还可用于将“ multipart / form- data”请求的一部分与支持相同方法参数类型的方法参数相关联。主要区别在于,当方法参数不是String时,@ RequestParam依赖于通过注册的Converter或PropertyEditor进行的类型转换,而@RequestPart依赖于HttpMessageConverters,并考虑了请求部分的“ Content-Type”标头。@RequestParam可能与名称- 值表单字段一起使用,而@RequestPart可能与包含更复杂内容(例如JSON,XML)的部分一起使用。
参见http://docs.spring.io/spring/docs/current/javadoc- api/org/springframework/web/bind/annotation/RequestPart.html