Spring MVC接收multipart/form-data集合对象/spring接收form-data的集合对象

因为要上传文件所以得用form-data,上传文件同时还想再放入一个List集合对象,实现方式就是前段用JSON.stringify()方法将JavaScript对象或值转换为JSON字符串,后台使用字符串接收然后解析一下。

前段:
图片是ApiPost接口调试工具,类似postMan
这里传入的字符串已经是json格式的了,图片是多个文件;
在这里插入图片描述

后台
后台可以接收到files,feedbackBills集合和其他数据了

import com.fasterxml.jackson.core.type.TypeReference;——注意这个类型

    @PostMapping("/verifyAssets")
    public AjaxResult verifyAssets(DismantleSiteOrderBody dismantleSiteOrderBody, MultipartFile[] files, String feedbackBills) {
     
          List<FeedbackBill> feedbackBillList = objectMapper.readValue(feedbackBills, new TypeReference<List<FeedbackBill>>() {});
          
        return success();
    }

这样写的原因:spring不使用formdata,可以自动映射,用了formdata就不行了,所以遇到formdata中带文件和数据一起上传的情况只能自己映射了

不使用@RequestBody原因:SpringMVC在接收集合请求参数时,需要在Controller方法的集合参数里前添加@RequestBody,而@RequestBody默认接收的enctype(MIME编码)是application/json,因此发送POST请求时需要设置请求报文头信息,否则SpringMVC在解析集合请求参数时不会自动的转换成JSON数据再解析成相应的集合。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值