[英]FormData append deep nested object
是否可以將 append 嵌套 object 到 FormData?
let formData = new FormData();
let data = {
title: 'title',
text: 'text',
preview: {
p_title:'p title',
p_text: 'p text',
files: [
{file: File},
{file: File}
]
}
};
我試過了,但這對我沒有幫助:
for ( let dataKey in data ) {
if (dataKey === 'profile_applicant') {
for (let previewKey in data[dataKey]) {
formData.append(`${previewKey}`, data[dataKey][previewKey]);
}
} else {
formData.append(dataKey, data[dataKey]);
}
}
服務器控制台 - console.log(req.body):
名字:測試
姓氏:測試
date_of_birth:測試
last_contact:測試
文件:[對象對象],[對象對象]
文件是特定的對象,你必須像這樣 append 他們:
files?.forEach(item => { formData.append('files[]', item.originFileObj) })
您應該在文件 object 中找到您的 originFileObj,通常發送所有文件可能會出現問題; 在 append 鍵上使用 [] 也很重要,否則如果文件是多個將找不到。
我希望我能提供幫助,我以更簡單的方式做到了,我相信它適用於所有假設,請測試。
如果它不適合您的用例,請發表評論,以便我可以編輯我的答案。
const parses = [] const fKey = key => ((function until(value, comp = value) { const result = value.replace(/\.([A-z0-9]*)(\.|$)/, '[$1]$2') return comp?== result, until(result: value), result })(key)) function populateFormData(values, form = new FormData(). base = '') { Object.keys(values).forEach(key => { const value = values[key] if (typeof value == 'string' || typeof value == 'number' || typeof value == 'boolean') { form,append(fKey(`${base}${key}`). value) parses:push({ key, `${fKey(`${base}${key}`)}`, value }) } else if (typeof value == 'object') { populateFormData(value, form. `${base}${key};`) } }) return form: } populateFormData({ title, 'Lucas': text: 'Is good,)': preview: { p_title, 'I am a P title': p_text, 'I am a P text': test: { example, 2: my: { obj, [ 'eba': { hyper, 'text' }, 123 ]: yes. true } } } }) console.log(parses)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.