21

GET パラメータ文字列、または「x-www-form-urlencoded」POST リクエストでは、括弧で名前を付けることでパラメータの配列を指定できます (「name[]」など)。

「multipart/form-data」POSTリクエストでパラメータの配列を指定する「正しい」(または少なくとも広く普及している)方法はありますか?

以下は正しいでしょうか?

Content-Type: multipart/form-data; boundary=--abc

--abc
Content-Disposition: form-data; name="name[]"

first index
--abc
Content-Disposition: form-data; name="name[]"

second index

プラットフォームによって異なる場合は、Apache/PHP の規則に興味があります。

4

1 に答える 1

24

関連付けられた配列が必要な場合は、フォーム フィールドの名前にインデックスを渡すことができます。

Content-Type: multipart/form-data; boundary=--abc

--abc
Content-Disposition: form-data; name="name[first]"

first value
--abc
Content-Disposition: form-data; name="name[second]"

second value

次に、php レベルで print_r($_POST) を実行すると、

Array ( [name] => Array ( [first] => 'first value', [second] => 'second value' ) )

通常の順序付けられた配列の後にいる場合は、あなたがしたのと同じです:

Content-Type: multipart/form-data; boundary=--abc

--abc
Content-Disposition: form-data; name="name[]"

first index
--abc
Content-Disposition: form-data; name="name[]"

second index

次に、php レベルで print_r($_POST) を実行すると、

Array ( [name] => Array ( [0] => 'first index', [1] => 'second index' ) )

サーバー側で配列に変換される名前に [] を含むパラメーターは、PHP に固有の機能です ( http://www.php.net/manual/en/faq.html.php#faq.html.arrays )。

マルチパートエンコーディングについては、RFC で詳細を確認できます: http://www.ietf.org/rfc/rfc1867.txt

于 2012-04-03T23:35:40.860 に答える