1、我们使用FormData有时候不仅仅要传给后端文件,还需要传给后端对象信息。
使用FormData传对象是用key-value形式的,所以传对象不能传整个对象,要传属性,
后端接口用对象接收即可,因为可以将传来的属性自动封装到实体类中(前端传来的属性名称和实体类
的属性名称一定要一致,否则无法封装)。
2、还有当我们传的对象里面还有引用对象的时候,比如User类里面还有一个Depot类,我们就应该这样
formData.append(“depot.id”, this.formData.depot.id);
这样的话,就可以成功传给User类里的Depot类了
前端实体类数据格式:
formData: {
account:'',
depot:{id:'', name:''},
name:'',
password:'',
auth:''
}
添加过程及提交
var data = new FormData();
data.append("account", this.formData.account);
if(""==this.formData.depot.id){
this.formData.depot.id = 999;
}
data.append("depot.id", this.formData.depot.id);
data.append("name", this.formData.name);
data.append("password", this.formData.password);
data.append("auth", this.formData.auth);
data.append("image", this.img);
axios.post(url, data).then(function (response) {
var res = response.data;
if(res.success){
obj.$message({
type: 'success',
message: '添加成功!'
});
vue.jump("user_list_page");
}else {
obj.$message.error({
type: 'fail',
message: res.msg
});
}
});
后端接口
@PostMapping("/add")
public Result add(User user, MultipartFile image, HttpServletRequest request){
}