O cabeçalho HTTP para uso para definir nomes de campo de formulário (multipart / form-dados)

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

  •  01-07-2019
  •  | 
  •  

Pergunta

Eu estou passando solicitações HTTP brutos para um servidor apache (recebido pelo PHP). O pedido é do tipo com várias partes / forma-dados, isto é, o mesmo tipo MIME usado quando o envio de formulários HTML. No entanto, eu não tenho certeza do que HTTP cabeçalho para uso para definir o nome de campo de formulário (eu só estou assumindo que é um cabeçalho que define isso, não sei o que mais poderia ser), que, em seguida, pode ser usado em PHP para acessar o campo em $ _GET ou $ _FILES.

O pedido HTTP pode ser algo como isto:

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--
Foi útil?

Solução

O cabeçalho Content-Disposition tem um argumento nome que tem o nome do controle. Deve haver um após cada --sub_boundary

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

Eu quase me esqueci: Se o campo é um controle de arquivo, há também um campo de nome de arquivo e um cabeçalho Content-Type

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

e se o arquivo não é um texto, você também precisa

Content-Transfer-Encoding: binary
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top