web-dev-qa-db-ja.com

マルチパート/フォームデータエンコーディングの配列をPOSTするにはどうすればよいですか?

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の規則に興味があります。

17
DougW

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

_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

22
Alexei Tenitski