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

但是我不知道为什么注释是“ RequestParam”而不是“ RequestBody”之类的,因为在表单中我们指定了“ method = post”,所以数据不应该在表单主体内吗?

非常感谢!

最佳答案

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


  公共@interface RequestPart
  
  可以用来关联一个部分的注释
  带方法参数的“ multipart / form-data”请求。支持的方法
  参数类型包括MultipartFile和Spring的
  MultipartResolver抽象,与javax.servlet.http.Part结合使用
  Servlet 3.0多部分请求,或者其他任何方法
  参数,零件的内容通过
  HttpMessageConverter考虑了“ Content-Type”
  请求部分的标头。这类似于@RequestBody
  确实根据非多部分的内容来解析参数
  定期要求。
  
  请注意,@ RequestParam批注也可以用于关联
  带有方法参数的“ multipart / form-data”请求的一部分
  支持相同的方法参数类型。
  
  主要区别在于,当method参数不是String时,
  @RequestParam依赖于通过注册的Converter进行的类型转换或
  @RequestPart依赖于HttpMessageConverters时的PropertyEditor
  考虑到请求的“ Content-Type”标头
  部分。 @RequestParam可能与名称-值表单字段一起使用
  而@RequestPart可能与包含更多内容的部分一起使用
  复杂内容(例如JSON,XML)。


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

07-25 23:22
查看更多