Analyse manuelle des données brutes de données multiparts/formulaires en PHP
Aperçu du problème
L'analyse des données brutes de requête HTTP au format multiparts/form-data peut être difficile en PHP, en particulier lors de la réception de données via une requête PUT qui n'est pas automatiquement analysée.
Solution avec analyse manuelle
Comme PHP ne gère pas automatiquement les requêtes PUT avec multipart/form-data, manuel l'analyse est nécessaire. Voici comment y parvenir :
-
Lire les données brutes : Utilisez file_get_contents('php://input') pour lire les données brutes de la requête.
- Extraire la limite : Analysez l'en-tête CONTENT_TYPE pour obtenir la chaîne de limite qui sépare les segments de données en plusieurs parties.
-
Diviser le contenu : Divisez les données brutes en blocs en fonction de la chaîne de limite . Supprimez l'élément "--" de fin.
-
Analyser les blocs : Parcourez chaque bloc pour identifier et analyser les champs de données :
-
Fichiers téléchargés : Faites correspondre les blocs qui indiquent les téléchargements de fichiers à l'aide du type MIME application/octet-stream. Extrayez l'attribut de nom et le contenu du fichier binaire.
-
Champs non-fichiers : Faites correspondre les blocs contenant des champs de données de formulaire. Extrayez l'attribut name et la valeur correspondante.
Usage
- Passez un tableau vide par référence comme argument à la fonction parse_raw_http_request.
- Appelez la fonction pour remplir le tableau avec les données analysées.
- Accédez aux données analysées à l'aide des clés du tableau correspondant aux noms de champs du formulaire.
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