一尘不染

对多部分文件使用@RequestParam是正确的方法吗?

spring-boot

我正在开发一个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文件有什么用吗?还是将来可能导致任何类型的错误?


阅读 776

收藏
2020-05-30

共1个答案

一尘不染

@RequestParamMultipartfile一起使用没错。

@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

2020-05-30