Ricezione multipart POST di richieste di dati in PHP
Domanda
Desidero ricevere i seguenti HTTP
richiesta 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--
(Nota:Io sono rientrato il sub-solo parti per renderlo più leggibile per questo post.)
Io non sono molto fluente in PHP e vorrei avere un aiuto/consigli per capire come ricevere questo tipo di form multipart richiesta nel codice PHP.Ho una volta scritto il codice, dove ho ricevuto un standard form HTML e quindi ho potuto accedere al modulo elementi utilizzando il loro nome come chiave di indice in $HTTP_GET_VARS
array, ma in questo caso non ci sono nessun elemento del modulo di nomi, e i dati del form parti non lineare (es.sotto parti = multilivello array).
Grato per qualsiasi aiuto!
/Robert
Soluzione
$HTTP_GET_VARS
, $HTTP_POST_VARS
, etc.è obsoleti, notazione, si dovrebbe essere utilizzando $_GET
, $_POST
, etc.
Ora, il contenuto del file deve essere in $_FILES
matrice globale, considerando che, se non ci sono i nomi degli elementi, io non sono sicuro circa il fatto che il resto del contenuto, la mostra di $_POST
.Comunque, se always_populate_raw_post_data
l'impostazione è vero in php.ini, i dati dovrebbero essere in $HTTP_RAW_POST_DATA
.Inoltre, la richiesta di tutto deve essere mostrato durante la lettura php://ingresso.
Altri suggerimenti
Si dovrebbe notare:
“php://input consente di leggere i raw POST dati.Si tratta di una minore quantità di memoria per la cpu alternativa a $HTTP_RAW_POST_DATA e non ha bisogno di alcun php.ini direttive.php://ingresso non è disponibile con enctype=”multipart/form-data”
Dal manuale di php...così sembra php://ingresso non è disponibile
Non commento ancora, ma questa è intened per completare pilsetnieks risposta
Uploadeds file saranno accessibili attraverso il $_FILE variabile globale, gli altri parametri saranno accessibili tramite $_GET variabile globale.