Bonjour,
Tout d'abord désolé si je ne poste pas au bon endroit, mais comme ce n'est pas un problème de langage C/C++ intrinsèquement, je n'ai pas trouvé de meilleur endroit.
Voici :
Je dispose d'un serveur Tinyweb sur lequel je fais du C++ avec CGI (contraintes techniques, je n'y peux rien). Je récupère donc les données d'un formulaire par le flux standard d'entrée.
J'ai trouvé un parseur fonctionnel ici, et je m'en servais jusqu'à présent avec des formulaires simples. A présent j'ai besoin d'uploader des fichiers (enctype="multipart/form-data"), mais je remarque que le parseur ignore le 3eme champ file.
Je décide de descendre d'un niveau pour consulter le stdin pur en C (fread(chaine,atoi(getenv("CONTENT_LENGTH")),1,stdin);) et en C++ (cout << cin), le fread boucle à l'infini et lorsque je stoppe le processus manuellement je n'obtiens pas du tout une chaine cohérente de la forme x=a&y=b&[...], mais des chiffres aléatoires. L'affichage de cin donne quelque chose comme "0047C158"...
En enlevant le enctype="multipart/form-data", plus de problème et une chaine de requète cohérente.
Questions :
- Qu'arrive-t-il à la chaine passée à stdin avec un enctype multipart/form-data ?
- Pourquoi le parseur n'interprète-il pas le 3ème champ fichier ?
Partager