请求既有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);
    }
posted @ 2021-04-20 08:53  微花  阅读(1070)  评论(0编辑  收藏  举报

Loading