2008-09-19 7 views
1

Je veux recevoir la demande HTTP suivante dans PHP:la réception des demandes de données multipart POST en 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-- 

(Note: J'indenté les sous-parties que pour le rendre plus lisible pour ce poste.)

Je ne parle pas couramment PHP et je voudrais obtenir de l'aide/des pointeurs pour comprendre comment recevoir ce type de demande de formulaire multi-parties en code PHP. J'ai déjà écrit du code où j'ai reçu un formulaire HTML standard et puis j'ai pu accéder aux éléments de formulaire en utilisant leur nom comme clé d'index dans le tableau $HTTP_GET_VARS, mais dans ce cas il n'y a aucun nom d'élément de formulaire et les données de formulaire sont pas linéaire (c'est-à-dire sous-parties = tableau à plusieurs niveaux).

Reconnaissant pour toute aide!

/Robert

Répondre

3

$HTTP_GET_VARS, $HTTP_POST_VARS, etc. est une notation obsolète, vous devez utiliser $_GET, $_POST, etc.

Maintenant, le contenu du fichier doit être dans le tableau global $_FILES, alors que, s'il n'y a pas des noms d'éléments , Je ne suis pas sûr de savoir si le reste du contenu apparaîtra dans $_POST. Quoi qu'il en soit, si le paramètre always_populate_raw_post_data est défini sur php.ini, les données doivent être $HTTP_RAW_POST_DATA. En outre, toute la demande devrait apparaître lors de la lecture php: // entrée.

+0

Merci pour votre réponse! Je suppose que la solution la plus décente serait de nommer les champs. Savez-vous quels en-têtes HTTP utiliser pour cette tâche? – sharkin

+0

Merci pour cette réponse, c'était utile. Remarque: Il existe des cas où $ HTTP_RAW_POST_DATA est rempli même si always_populate_raw_post_data est faux. C'est ce qui a fonctionné pour moi. – sherbang

-2

fichiers Uploadeds seront accessibles par la variable globale _file $, d'autres paramètres seront disponibles par la variable globale $ _GET.

+0

En PHP, alors que 'multipart/form-data' sera accessible via le' $ _FILE' global, le reste des données est accessible via le '$ _POST' global. –

1

Vous devez noter:

« php: // entrée vous permet de lire des données brutes POST. Il s'agit d'une alternative moins gourmande en mémoire à $ HTTP_RAW_POST_DATA et n'a pas besoin de directives php.ini spéciales. php: // input est pas disponible avec enctype = » multipart/form-data »

De manuel php ... il semble donc php: // input est pas disponible

ne peux pas commenter, mais cela est encore intened en complément de pilsetnieks answer

Questions connexes