2012-04-03 5 views
13

In einer GET-Parameterzeichenfolge oder einer POST-Anfrage "x-www-form-urlencoded" ist es möglich, ein Array von Parametern anzugeben, indem Sie sie mit Klammern (z. B. "name []") benennen.Wie poste ich ein Array mit Multipart/Formulardatencodierung?

Gibt es eine "richtige" (oder zumindest eine weit verbreitete Konvention) Möglichkeit, ein Array von Parametern mit einer "multipart/form-data" POST-Anfrage anzugeben?

Wäre das Folgende korrekt?

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 

Wenn es nach Plattform variiert, interessiert mich die Konvention für Apache/PHP.

Antwort

15

Wenn Sie ein zugeordnetes Array mögen, können Sie Index in einem Namen eines Formularfeld übergeben:

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 

dann auf PHP-Ebene print_r ($ _ POST) werden Sie

Array ([name] => Array ([first] => 'first value', [second] => 'second value'))

Wenn Sie nur nach einem normalen geordneten Array sind dann wie Sie:

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 

dann auf PHP-Ebene print_r ($ _ POST) werden Sie

Array ([name] => Array ([0] => 'first index', [1] => 'second index'))

Params mit [] in ihrem Namen in Arrays auf einer Server-Seite zu übersetzen ist eine Funktion, die spezifisch für PHP (http://www.php.net/manual/en/faq.html.php#faq.html.arrays).

Wie für mehrteilige Codierung können Sie mehr in RFC finden: http://www.ietf.org/rfc/rfc1867.txt

+1

Dank Alexei. Haben Sie einen Hinweis auf Spezifikationen oder Dokumentationen, die dies definieren? Speziell im Hinblick auf einen mehrteiligen POST im Vergleich zu einem Standard-urlencodierten POST? – DougW

+1

Ich habe ein paar Links zu der Antwort hinzugefügt –

+0

Ich bin definitiv nit-picky hier, aber ich möchte darauf hinweisen, dass die PHP-Dokumente nur diese Konvention in Bezug auf Web-Formulare erwähnen, die immer POST über x-www- form-urlencodiert. Ich vermute *, dass zu der Zeit, wenn POST-Variablen von Apache an PHP übergeben werden, es keinen Unterschied zwischen den Inhaltstypen gibt, aber ich habe nichts gelesen, was das bestätigt. Und es gibt definitiv eine Menge scheinbar sicherer Annahmen über PHP, die sich als katastrophal falsch erweisen. Ich werde dafür sorgen, dass ich das verifiziere. – DougW

Verwandte Themen