根据春季文件上传的标准方式: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