Quel en-tête HTTP utiliser pour définir les noms de champs de formulaire (multipart / form-data)

StackOverflow https://stackoverflow.com/questions/101662

  •  01-07-2019
  •  | 
  •  

Question

Je passe des requêtes HTTP brutes à un serveur Apache (reçu par PHP). La demande est du type multipart / form-data, c’est-à-dire le même type MIME que celui utilisé lors de la soumission de formulaires HTML. Cependant, je ne sais pas quel en-tête HTTP utiliser pour définir le nom du champ de formulaire (je suppose simplement que c'est un en-tête définissant ceci, je ne sais pas quoi d'autre pourrait être cela) qui peut ensuite être utilisé en PHP pour accéder à la champ dans $ _GET ou $ _FILES.

La requête HTTP pourrait ressembler à ceci:

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--
Était-ce utile?

La solution

L'en-tête Content-Disposition a un argument de nom qui porte le nom du contrôle. Il devrait y en avoir un après chaque --sub_boundary

--sub_boundary
Content-Disposition: form-data; name="mycontrol"

J'ai failli oublier: si le champ est un contrôle de fichier, il existe également un champ nom de fichier et un en-tête Content-Type

--sub_boundary
Content-Disposition: form-data; name="mycontrol"; filename="file1.xml"
Content-Type: application/xml;

et si le fichier n'est pas du texte, vous avez également besoin de

Content-Transfer-Encoding: binary
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top