如何用多部分/表单数据编码 POST 数组?

2022-08-30 20:03:24

在 GET 参数字符串或“x-www-form-urlencoded”POST 请求中,可以通过用括号命名参数(例如“name[]”)来指定参数数组。

是否有一种“正确”(或至少是广泛传播的约定)方法来指定具有“多部分/表单数据”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的约定感兴趣。


答案 1

如果需要一个关联的数组,可以在表单字段的名称中传递索引:

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


答案 2

推荐