上传文件,提交数据—FormData对象格式
在进行上传文件(例如Excel)时,处理的几步,否则无法上传
一、修改请求头
在修改请求头,是至关重要的,因为请求数据格式是不同的:
header: 'multipart/form-data',
注:在写请求头的时候遇到了一个坑,后端在给请求头的,可能会给成: application/x-www-form-urlencoded 中格式,其实是错,它无法实现对数据的formData处理。
二、创建FormData
我们在提交参数,调接口的时候,要创建一个formData,将所需的参数添加进去:
const params = {p1:",file:{...},...} //有多个参数
const formData = new FormData() // 或 try等内部 const formData = new FormData()
//将params所有参数添加到formData中 包括其中file
Object.keys(params).forEach((key) => { //遍历每个参数 进行添加
if (params [key]) {
formData.append(key, params[key]);
}
});
注意:在提交的参数中存在数组的类型,formData会将提交的数据变成下列形式
使用这种方式提交参数时,最好不要有数组类型的参数,否则很麻烦,我暂时没有什么好的处理方式,如果大家有,欢迎留言,我也学习学习》》》
三、调用接口
直接将添加参数后的数据作为参数传过去:
//哈哈~ 由于内部ajax进行了内部封装。只要传入参数哦
res = await apis.createRedEnvelopeActivity(formData);
console.log(res)
FormData 学习
其实要学习FormData ,看官方网站,是学的很快的,很容易理解,
FormData 提供了几个API:
-
append()
添加数据 ,用的最多的 -
has()
判断某个属性是否存在 ,添加完数据后,可进行判断formData对象中是否存在某个数据
… 其他的见官网哦:https://developer.mozilla.org/zh-CN/docs/Web/API/FormData/FormData