使用RequestParam上传Spring文件

时间:2017-11-26 06:13:30

标签: java spring spring-mvc spring-boot

根据春季文件上传的标准方式:https://spring.io/guides/gs/uploading-files/ 我们将使用@RequestParam(“file”)MultipartFile文件来接收从表单上传的文件。

但我想知道为什么注释是“RequestParam”而不是像“RequestBody”这样的东西,因为在我们指定“method = post”的形式中,数据不应该在帖子体内吗?

非常感谢!

1 个答案:

答案 0 :(得分:5)

要在春季获得MultipartFile,我们可以使用@RequestPart@RequestParam。这些注释用于关联multipart/form-data请求的一部分。这是用spring docs编写的:

  

public @interface RequestPart

     

可用于关联a的一部分的注释   带有方法参数的“multipart / form-data”请求。支持的方法   参数类型包括MultipartFile和Spring的结合   MultipartResolver抽象,javax.servlet.http.Part结合在一起   Servlet 3.0多部分请求,或其他任何方法   参数,零件的内容通过一个   HttpMessageConverter考虑到'内容类型'   请求部分的标题。 这类似于@RequestBody   确实根据非多部分的内容解决参数   定期请求。

     

请注意,@ RequestParam注释也可用于关联   带有方法参数的“multipart / form-data”请求的一部分   支持相同的方法参数类型。

     

主要区别在于当method参数不是String时,   @RequestParam依赖于通过已注册的Converter或类型转换   PropertyEditor,而@RequestPart依赖于HttpMessageConverters   考虑请求的“Content-Type”标题   部分。 @RequestParam可能与名称 - 值表单字段一起使用   而@RequestPart可能会与包含更多内容的部分一起使用   复杂内容(例如JSON,XML)。

链接:https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/RequestPart.html