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
Libérer: 2024-10-28 06:47:02
original
1025 Les gens l'ont consulté

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>
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal