2022年12月18日 星期日

把Object轉換為FormData

 

網路上找不到寫好的,或大部分只有一層,所以花了點時間,用遞回自己寫一個,做一下紀錄。


const objectToFormData = (object: RequestParams = {}, formData: FormData = new FormData(), parentKey?: string) => {
Object.keys(object).forEach((key) => {
const currentKey = parentKey ? `${parentKey}[${key}]` : key
if ([Array, Object].includes(object[key].constructor)) {
objectToFormData(object[key], formData, currentKey)
} else {
formData.append(currentKey, object[key])
}
})
return formData
}

// use
for (const pair of objectToFormData({
path: "health_tip",
a: {
a: "a",
b: [1],
},
b: [1, 2, 3],
file,
}).entries()) {
console.log(pair);
}

// result