Maison >développement back-end >tutoriel php >Comment puis-je analyser manuellement « multipart/form-data » en PHP pour les requêtes PUT ?

Comment puis-je analyser manuellement « multipart/form-data » en PHP pour les requêtes PUT ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-28 06:47:02978parcourir

How Can I Parse Manually `multipart/form-data` in PHP for PUT Requests?

Analyse manuelle des données multiparts/formulaires en PHP pour les requêtes PUT

L'analyse des données brutes multiparts/formulaires en PHP peut être difficile, surtout pour les requêtes PUT. L'analyseur intégré de PHP gère automatiquement les requêtes POST mais pas PUT.

Contexte :

Multipart/form-data est un format utilisé pour encapsuler plusieurs parties de données, y compris des champs. et fichiers, au sein d'un seul corps de requête. Les données sont séparées par des chaînes de délimitation et chaque partie a son type de contenu et son nom.

Analyse manuelle :

Pour analyser manuellement les données multiparts/formulaires, vous pouvez utilisez les étapes suivantes :

  1. Récupérez les données brutes de la requête : $input = file_get_contents('php://input');
  2. Extraire la limite : preg_match('/boundary= (.*)$/', $_SERVER['CONTENT_TYPE'], $matches);
  3. Divisez les données en blocs en fonction de la limite : $a_blocks = preg_split("/- $boundary/", $ input);
  4. Pour chaque bloc :

    • Pour les champs de fichiers (contenant "application/octet-stream") :

      • Extraire le nom du champ et le contenu du fichier : preg_match('/name="([^"]*)".*stream[n|r] ([^nr].*)?$/s', $ block, $matches);
    • Pour les autres champs :

      • Extraire le nom et la valeur du champ : preg_match('/name="( [^"]*)"[n|r] ([^nr].*)?r$/s', $block, $matches);
  5. Attribuez le champ et la valeur à une structure de données : $a_data[$matches[1]] = $matches[2];

Exemple d'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!

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