因为要上传文件所以得用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数据再解析成相应的集合。