请求既有multipartFile,也有实体的解决方案
上回书我们说到,我们在发文件上传请求的时候,携带数据
this.fileData.append('trainName', this.dataModel.trainName); // 添加培训名称
然后发送请求
this.postRequest("/manager/staffTrain/upload", this.fileData).then((resp) => {
后台接收时
@RequestMapping("upload")
@ResponseBody
public CommonVO fileUpload(@RequestParam("files") MultipartFile[] multipartFiles, String trainName) {
详细请看上一篇文章https://www.cnblogs.com/flower1360/p/14638370.html
但是这样子只能接受单个的数据,那如果我们想要接受一个实体要怎么办呢总不能一个一个的接收吧
解决方法就是将前端的试题转为Json字符串,进行传输,这样后端只要接受一个字符串,然后将其转为实体即可
1. 前端
var godsJson = JSON.stringify(this.model.updateModel)
this.fileData.append('goods', godsJson);
之后和之前一样发送请求即可
this.postRequest("/store/goods/update", this.fileData).then((resp) => {
2. 后端添加Json依赖
我采用的是fastjson
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.70</version>
</dependency>
3. 后端接口
@PostMapping("update")
public CommonVO updateGoods(@RequestParam("files") MultipartFile[] multipartFiles,@RequestParam("goods") String goodsJson){
Goods goods = JSONObject.parseObject(goodsJson, Goods.class);
return goodsService.updateGoods(multipartFiles,goods);
}
本博客文章主要供博主学习交流用,所有描述、代码无法保证准确性,如有问题可以留言共同讨论。