/**
* 嵌套对象转FormData
* @param formData
* @param data
* @param parentKey
*/
const appendFormData = (formData: any, data: any, parentKey = '') => {
for (const key in data) {
if (Object.prototype.hasOwnProperty.call(data, key)) {
const value = data[key];
const fullKey = parentKey ? `${parentKey}.${key}` : key;
if (Array.isArray(value)) {
if (value.length > 0 && value[0] instanceof File) {
// 如果是文件列表,文件列表需特殊处理
value.forEach((file, index) => {
formData.append(`${fullKey}`, file);
});
} else {
value.forEach((item, index) => {
if (typeof item === 'object' && item !== null) {
appendFormData(formData, item, `${fullKey}[${index}]`);
} else {
formData.append(`${fullKey}[${index}]`, item); // 将数组值作为对象属性值直接添加到 FormData 中
}
});
}
} else if (typeof value === 'object' && value !== null) {
if (value instanceof File) {
formData.append(fullKey, value);
} else {
appendFormData(formData, value, fullKey);
}
} else {
if (value != undefined && value != null) {
formData.append(fullKey, value);
}
}
}
}
};
vue中使用axios上传文件以FileReader,FormData对象使用
2024-04-22 00:30:07 67 阅读