Maison >développement back-end >tutoriel php >Comment analyser manuellement les données Multipart/Form-Data pour les requêtes PUT en PHP ?

Comment analyser manuellement les données Multipart/Form-Data pour les requêtes PUT en PHP ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-29 11:32:30909parcourir

How to Manually Parse Multipart/Form-Data Data for PUT Requests in PHP?

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=\&quot;([^\&quot;]*)\&quot;.*stream[\n|\r]+([^\n\r].*)?$/s', $block, $matches);
    }
    // Parse other form fields
    else
    {
        // Extract form field name and value using regex
        preg_match('/name=\&quot;([^\&quot;]*)\&quot;[\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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn