重剑无锋,大巧不工 SpringBoot --- 使用 Ajax FromData 上传文件并传参

页面

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
const formData = new FormData();

fileList.forEach(file => {
formData.append('file', file.originFileObj);
});


// 每个表单是否填写完成
let params = [];

.....


let data = {};
data.filePath = "";
data.markers = params;
formData.append("params", data);

$.ajax({
url: "/marker/file",
type: "POST",
processData: false,
contentType: false,
data: formData,
success: function (data) {
},
error: function (err) {
}
});

spring boot 处理

1
2
3
4
@PostMapping("/file")
public Object markerFile(@RequestParam("file") MultipartFile multipartFile, Params params){
return markerService.marker(multipartFile,params);
}

注意

  1. antd 上传组件里,真正的文件是 file.originFileObj
  2. params 是复杂的对象的话, spring boot 接受的 Params 对象需要使用 String 字符串进行序列化成对象; 或者将 Params 对象的属性分开来写, 如果某个属性又是复杂对象的话通用需要序列化