@RequestPart-同时上传表单数据和文件

前端接口上传文件的时候,通常会将请求header的content-type设置为:multipart/form-data, 或者form表单提交的时候将enctype设置为"multipart/form-data" 。

后端收到请求时由于请求体有@RequestBody 注解标识,通常会用application/json, application/xml处理content-type,此时会报编码格式的问题。

这时候可以使用@RequestPart参数来接收实体对象,@RequestParam来单个接收参数。

@RequestPart这个注解用在multipart/form-data表单提交请求的方法上。

@RequestParam也同样支持multipart/form-data请求。

@RequestParam和@RequestPart的区别是:@RequestParam适用于name-valueString类型的请求域,@RequestPart适用于复杂的请求域(像JSON,XML)

@PostMapping("/upload")
public Object upload(@RequestPart(value = "file", required = true) MultipartFile file, @RequestPart  @Validated HlJourney hlJourney) {
    return service.upload(file, hlJourney);
}

使用postman上传图片要选择form-data方式

因为是同时传文件和对象,所以是两个参数,同时还要传对象 所以要把右侧Content  Type打开

 同时在对象后面添加参数application/json;charset=UTF-8

 对象的Value值,要以Json格式传递

 前端需要注意:单独给表单对象设置type:"application/json"

formData.append("hlJourney", new Blob([JSON.stringify({"title": "测试标题", "type": 3})], {type: "application/json"}));

主要关键是:把json转成二进制流和文件流一起发送,以及JSON和JavaBean的映射

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值