@RequestParam和@RequestPart的区别。文件流上传接口注意注解和请求头

导读:本篇文章讲解 @RequestParam和@RequestPart的区别。文件流上传接口注意注解和请求头,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

我的问题

在这里插入图片描述
所有使用文件上传的,接收文件流时,需要注意的点一共有两个
1、注解@RequestPart
2、请求头Content-Type=multipart/form-data

区别具体介绍

(摘录自小猎人的博客:https://blog.csdn.net/u012894692/article/details/115875674)

  • @RequestPart
    1、@RequestPart这个注解用在multipart/form-data表单提交请求的方法上。
    2、支持的请求方法的方式MultipartFile,属于Spring的MultipartResolver类。这个请求是通过http协议传输的
  • @RequestParam
    1、@RequestParam支持’application/json’,也同样支持multipart/form-data请求
  • 区别
    当请求方法的请求参数类型不是String 或 MultipartFile / Part时,而是复杂的请求域时,@RequestParam 依赖Converter or PropertyEditor进行数据解析, RequestPart参考 ‘Content-Type’ header,依赖HttpMessageConverters 进行数据解析

当请求为multipart/form-data时,@RequestParam只能接收String类型的name-value值,@RequestPart可以接收复杂的请求域(像json、xml);@RequestParam 依赖Converter or PropertyEditor进行数据解析, @RequestPart参考’Content-Type’ header,依赖HttpMessageConverters进行数据解析

前台请求:
jsonData为Person对象的json字符串
uploadFile为上传的图片

后台接收:

@RequestPart可以将jsonData的json数据转换为Person对象
@RequestMapping("jsonDataAndUploadFile")
@ResponseBody
public String jsonDataAndUploadFile(@RequestPart("uploadFile") MultiPartFile uploadFile,
                                    @RequestPart("jsonData") Person person) {
    StringBuilder sb = new StringBuilder();
    sb.append(uploadFile.getOriginalFilename()).append(";;;"));
    return person.toString() + ":::" + sb.toString();
@RequestParam对于jsonData的json数据只能用String字符串来接收
@RequestMapping("jsonDataAndUploadFile")
@ResponseBody
public String jsonDataAndUploadFile(@RequestPart("uploadFile") MultiPartFile uploadFile,
                                    @RequestParam("josnData") String jsonData) {
    StringBuilder sb = new StringBuilder();
    sb.append(uploadFile.getOriginalFilename()).append(";;;"));
    return person.toString() + ":::" + sb.toString();
}
  • 总结
    当请求头中指定Content-Type:multipart/form-data时,传递的json参数,@RequestPart注解可以用对象来接收,@RequestParam只能用字符串接收

===================》甲乙Rocket ;2022.08.28; 22年8月第四周

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/96193.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!