如何使用多部分/表单数据编码来发布数组?

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

是否有一个“正确的”(或至less是一个广泛的约定)的方式来指定一个“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的约定感兴趣。

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

 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