Analyse manuelle des données brutes Multipart/Form-Data en PHP
Lors du traitement des données des requêtes HTTP PUT avec le format multipart/form-data, PHP n'analyse pas automatiquement les données brutes. Par conséquent, les développeurs peuvent rencontrer des difficultés pour extraire des informations de telles requêtes.
Solution :
Lire les données brutes de la requête :
Extraire la limite du type de contenu En-tête :
Diviser les données par limite :
Séparez les blocs en champs individuels :
Pour chaque bloc :
Téléchargé Fichiers :
Autre Champs :
示例 Code :
<code class="php">function parse_raw_http_request(array &$a_data) { $input = file_get_contents('php://input'); preg_match('/boundary=(.*)$/', $_SERVER['CONTENT_TYPE'], $matches); $boundary = $matches[1]; $a_blocks = preg_split("/-+$boundary/", $input); array_pop($a_blocks); foreach ($a_blocks as $id => $block) { if (empty($block)) continue; if (strpos($block, 'application/octet-stream') !== FALSE) { preg_match('/name=\"([^\"]*)\".*stream[\n|\r]+([^\n\r].*)?$/s', $block, $matches); } else { preg_match('/name=\"([^\"]*)\"[\n|\r]+([^\n\r].*)?\r$/s', $block, $matches); } $a_data[$matches[1]] = $matches[2]; } }</code>
Utilisation :
<code class="php">$a_data = array(); parse_raw_http_request($a_data); var_dump($a_data);</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!