2016-10-20 14 views
1

私はSails/nodeJSの配列として投稿データを取得するためにいくつかの入力を試みています。NodeJSでマルチパート/フォームデータを配列に変換する簡単な方法はありますか?

この方法で試してみると、データを配列として完全に取得できます。

<input type="text" class="form-control" name="answer[1][txt]"> 
<input type="text" class="form-control" name="answer[1][img]"> 
<input type="text" class="form-control" name="answer[2][txt]"> 
<input type="text" class="form-control" name="answer[2][img]"> 

出力:

answer:[ { txt: 'ans 1', img: 'yes' }, { txt: 'ans 2', img: 'yes' } ] 

しかし、私はENCTYPE(にenctype = "multipart/form-データ")形式の属性を使用する場合、以前の方法として、データを取得することはできません。 出力:

'answer[0][txt]': 'ans 1', 'answer[0][img]': 'yes', 
'answer[1][txt]': 'ans 2','answer[1][img]': 'yes', 

私は、enctype属性を使用するときに何が起こったのかわかりません。 enctype(multipart/form-data)属性を使用して最初の出力データのみを返すようにします。 ありがとうございました

+0

の値に設定した値、プロパティのオブジェクト、試合"txt"または"img"部分を反復するfor..inループを使うのか? –

+0

アップロード画像/ファイルの場合 –

+0

'fetch()'、 'XMLHttpRequest()'やその他の関数を使って '

'を 'POST 'することができますか?' 'html'は' 'のみ使用できますか? – guest271314

答えて

0

現在返されているオブジェクトから新しいオブジェクトを作成できます。あなたはマルチパート/フォームデータを使用する必要がない理由既存のオブジェクト

let data = { 
 
    'answer[0][txt]': 'ans 1', 
 
    'answer[0][img]': 'yes', 
 
    'answer[1][txt]': 'ans 2', 
 
    'answer[1][img]': 'yes' 
 
}; 
 

 
let res = { 
 
    answer: [] 
 
}; 
 

 
for (let prop in data) { 
 
    res.answer.push({ 
 
    [prop.match(/txt|img/)[0]]: data[prop] 
 
    }) 
 
} 
 

 
console.log(res);

関連する問題