在使⽤MultipartFile接收上传的⽂件时,⼀般会有接收其他请求参数的需求
当请求参数过多时,通常情况下会将请求参数封装为body上传,⽂件⽤单独的 MultipartFile 接收,但是这样写后端⼀直⽆法接收成功
问题
@PostMapping(\"/save\")
public Result> pushMoment(HttpServletRequest request, @RequestBody ContentVo contentVo,
@RequestParam(value = \"contentParam\") MultipartFile contentParam //...
}
HTTP请求分为了消息头和消息体,头信息⾥⾯的Content-Type字段定义了消息体的请求格式,接⼝⾥⾯声明 @RequestBody的参数只能设置为 \"Content-Type: application/json\",⽽ MultipartFile 参数只能设置为\"Content-Type: multipart/form-data\",上述两种格式并不是兼容的,那问题就来了,前端请求的时候 Content-Type 怎么设置,⽆论哪种格式都是错的。
body最终不能和MultipartFile同时存在
解决⽅案
前端统⼀格式\"Content-Type: multipart/form-data\",结构体在前端传递的时候统⼀转成json字符串,后端接收以后⽤Gson转成结构体
@PostMapping(\"/save\")
public Result> pushMoment(@RequestPart MultipartFile fileUrl,@RequestParam(value = \"contentParam\") String contentParam ) { log.info(\"拿到的⽂件---> ={}\ Gson gson = new Gson();
ContentUpload contentUpload = gson.fromJson(contentParam, ContentUpload.class);}
因篇幅问题不能全部显示,请点此查看更多更全内容