【问题标题】:Spring File Upload with RequestParam使用 RequestParam 上传 Spring 文件
【发布时间】:2017-11-26 06:13:30
【问题描述】:

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

但我想知道为什么注释是“RequestParam”而不是“RequestBody”之类的东西,因为在我们指定“method=post”的表单中,数据不应该在表单帖子正文中吗?

非常感谢!

【问题讨论】:

    标签: java spring spring-mvc spring-boot


    【解决方案1】:

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

    公共@interface 请求部分

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

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

    主要区别在于方法参数不是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

    【讨论】:

    • 我明白了!非常感谢!
    猜你喜欢
    • 2017-03-24
    • 2011-05-11
    • 1970-01-01
    • 1970-01-01
    • 2015-11-09
    • 2015-08-28
    • 2013-04-01
    • 2015-05-23
    相关资源
    最近更新 更多