Recevoir des requêtes de données POST en plusieurs parties en PHP
Question
Je souhaite recevoir la demande HTTP
suivante dans PHP:
Content-type: multipart/form-data;boundary=main_boundary
--main_boundary
Content-type: text/xml
<?xml version='1.0'?>
<content>
Some content goes here
</content>
--main_boundary
Content-type: multipart/mixed;boundary=sub_boundary
--sub_boundary
Content-type: application/octet-stream
File A contents
--sub_boundary
Content-type: application/octet-stream
File B contents
--sub_boundary
--main_boundary--
(Remarque: j'ai mis en retrait les sous-parties uniquement pour le rendre plus lisible pour ce poste.)
Je ne maîtrise pas très bien PHP et souhaiterais obtenir de l'aide / des indicateurs pour savoir comment recevoir ce type de demande de formulaire en plusieurs parties dans du code PHP. Une fois, j'ai écrit du code dans lequel j'ai reçu un formulaire HTML standard, puis je pouvais accéder aux éléments du formulaire en utilisant leur nom comme clé d'index dans le tableau $ HTTP_GET_VARS
, mais dans ce cas, il n'y a pas d'élément de formulaire. les noms et les parties de données de formulaire ne sont pas linéaires (c.-à-d. sous-parties = tableau à plusieurs niveaux).
Reconnaissant pour toute aide!
/ Robert
La solution
$ HTTP_GET_VARS
, $ HTTP_POST_VARS
, etc. est une notation obsolète, vous devriez utiliser $ _GET
, $ _ POST
, etc.
Le contenu du fichier doit maintenant figurer dans le tableau global $ _FICHES
, tandis que, s'il n'y a pas de nom d'élément, je ne suis pas sûr que le reste du contenu s'affiche dans < code> $ _ POST . Quoi qu'il en soit, si le paramètre always_populate_raw_post_data ??code> est vrai dans php.ini , les données doivent être dans
$ HTTP_RAW_POST_DATA
. De plus, toute la requête devrait apparaître lors de la lecture de php: // input .
Autres conseils
Vous devriez noter:
& # 8220; php: // L’entrée vous permet de lire les données brutes POST. C'est une alternative moins coûteuse en mémoire que $ HTTP_RAW_POST_DATA et ne nécessite aucune directive php.ini spéciale. php: // L'entrée n'est pas disponible avec enctype = & # 8221; multipart / form-data & # 8221;
.D'après le manuel php ... il semble donc que php: // l'entrée n'est pas disponible
Je ne peux pas encore commenter, mais cela est censé compléter la réponse de pilsetnieks
Les fichiers téléchargés seront accessibles via la variable globale $ _FILE, les autres paramètres seront accessibles via la variable globale $ _GET.