Quale intestazione HTTP utilizzare per impostare i nomi dei campi modulo (multipart / form-data)

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

  •  01-07-2019
  •  | 
  •  

Domanda

Sto passando richieste HTTP non elaborate a un server Apache (ricevuto da PHP). La richiesta è di tipo multipart / form-data, ovvero lo stesso tipo MIME utilizzato durante l'invio di moduli HTML. Tuttavia, non sono sicuro di quale intestazione HTTP utilizzare per impostare il nome del campo modulo (sto solo supponendo che sia un'intestazione che lo definisce, non so cos'altro potrebbe essere) che quindi può essere utilizzato in PHP per accedere al campo in $ _GET o $ _FILES.

La richiesta HTTP potrebbe assomigliare a questa:

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--
È stato utile?

Soluzione

L'intestazione Content-Disposition ha un argomento name che ha il nome del controllo. Dovrebbe essercene uno dopo ogni --sub_boundary

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

Quasi dimenticavo: se il campo è un controllo file, c'è anche un campo nome file e un'intestazione Content-Type

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

e se il file non è di testo, è necessario anche

Content-Transfer-Encoding: binary
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top