Analyse manuelle des données brutes multiparts/données de formulaire en PHP pour les requêtes PUT
Lorsque vous travaillez avec des requêtes multiparts/données de formulaire, en particulier dans Dans le contexte des opérations HTTP PUT, l'analyse intégrée de PHP peut ne pas traiter automatiquement les données brutes comme elle le fait pour les requêtes POST. Pour surmonter ce problème, une analyse manuelle est requise.
Récupération des données brutes
Tout d'abord, récupérez le corps brut de la requête HTTP à l'aide de file_get_contents('php://input' ).
Analyse de l'en-tête Content-Type
Extraire la limite en plusieurs parties de l'en-tête Content-Type à l'aide d'une expression régulière :
<code class="php">preg_match('/boundary=(.*)$/', $_SERVER['CONTENT_TYPE'], $matches); $boundary = $matches[1];</code>
Diviser les données
Divisez les données brutes en blocs individuels séparés par la limite :
<code class="php">$a_blocks = preg_split("/-+$boundary/", $input); array_pop($a_blocks);</code>
Itération sur les blocs
Parcourez chaque bloc et analysez son contenu :
<code class="php">foreach ($a_blocks as $id => $block) { // Check if the block contains uploaded files if (strpos($block, 'application/octet-stream') !== FALSE) { // Extract file metadata using regex preg_match('/name=\"([^\"]*)\".*stream[\n|\r]+([^\n\r].*)?$/s', $block, $matches); } // Parse other form fields else { // Extract form field name and value using regex preg_match('/name=\"([^\"]*)\"[\n|\r]+([^\n\r].*)?\r$/s', $block, $matches); } $a_data[$matches[1]] = $matches[2]; }</code>
Les données analysées sont désormais accessibles à partir du tableau $a_data. Cette méthode d'analyse personnalisée vous permet de gérer des données brutes multiparts/form-data en PHP, ce qui est particulièrement utile pour les scénarios impliquant des requêtes PUT.
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!