如何使用multipart / form-data编码发布数组?

时间:2012-04-03 23:15:28

标签: php apache http post multipartform-data

在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的约定很感兴趣。

1 个答案:

答案 0 :(得分:17)

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

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' ) )

在名称中使用[]转换为服务器端数组的params是特定于PHP的功能(http://www.php.net/manual/en/faq.html.php#faq.html.arrays)。

对于多部分编码,您可以在RFC中找到更多信息:http://www.ietf.org/rfc/rfc1867.txt

相关问题