Подтвердить что ты не робот

Как сделать POST массив с кодировкой multipart/form-data?

В строке параметров GET или в запросе POST "x-www-form-urlencoded" можно указать массив параметров, назвав их скобками (например, "name []" ).

Существует ли "правильный" (или, по крайней мере, широко распространенный) способ указать массив параметров с запросом POST "multipart/form-data"?

Правильно ли будет?

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.

4b9b3361

Ответ 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