Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2836 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C/C++]HTTP Requete POST pour uploader un fichier

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C/C++]HTTP Requete POST pour uploader un fichier

n°362657
mordicator
Posté le 16-04-2003 à 03:38:01  profilanswer
 

Bonjours a tous!
 
Voila, j'ai un probleme sur le developpement que je mene actuellement; je tente d'ecrire un programme qui aurait pour but d'uploader un fichier sur un serveur HTTP. Pour cela, j'ai installe un serveur Apache 1.3, le CGI qui vas bien pour receptionner les uploads et tout configure pour que ca marche. Pour infos je suis sous windows xp. J'ai teste la configuration de mon serveur avec IE6 et tout fonctionne, j'arrive bien a uploader mes fichiers.
Le but de mon programme est donc de remplacer IE (ou tout autre navigateur) par mon propre code. J'ai donc regarde un coup dans les diverses RFC traitant de ce sujet (2068 et 1867 particulierement), un peu de doc d'apache et pas mal de sniffing reseau pour essayer de reproduire le mecanisme.
Si je poste, c'est que ca ne marche pas :) mais je ne vois pas d'ou vient le probleme dans mon implementation du protocole.
J'utilise une methode POST pour construire mon header comme suit:
-------8<--------------
POST /cgi-bin/CGI.exe HTTP/1.1CRLF
Host: localhost:80CRLF
Content-Length: 1747CRLF
Content-Type: multipart/form-data; boundary="abfge"CRLF
CRLF
-------8<--------------
 
Les CRLF correspondent a des sequences "\r\n" comme indique dans la RFC2068.
Rien de remarquable, a part que pour le Content-Length je donne la valeur exacte du message qui suivra l'en-tete et que mon boundary est bien unique dans les donnees qui seront envoyes par la suite.
Apres avoir envoye ce header, j'envois le message lui meme, soit dans mon cas les donnees a uploader comme suit:
-------8<--------------
--abfgeCRLF
Content-Disposition: form-data; name="dataFile"; filename="c:\temp\test.txt"CRLF
Content-Type: application/octet-streamCRLF
CRLF
<donnees du fichier ici>
CRLF
CRLF
--abfge--CRLF
CRLF
-------8<--------------
Ici, je commence par envoyer mon "boundary" complet (avec les "--" devant) pour signifier le debut des donnees, suivi de l'entete du champ. Pour le Content-Type, j'ai mis "application/octet-stream" car c'est normalement la valeur par defaut, mais j'ai les memes resultats avec "text/plain". Enfin je termine l'envois par le boundary complet et ses "--" terminaux, sans oublier les sauts habituels.
Le contenu des donnees est suffisement petit pour ne pas avoir besoin d'etre tronque en plusieurs paquet (pour mes tests, IE par ex envois tout en un seul bloc).
Suite a cet envois, j'attends la reponse du serveur. Apache me revois alors un magnifique code 200 OK, suite a quoi je ferme la connexion.
A ce moment je m'attends a trouver mon fichier sur le serveur, mais malheureusement, rien!
 
J'ai observe comment IE faisait a l'aide d'un sniffer, je n'ai rien trouve de nouveau. Le seul point qui change vraiment c'est qu'IE genere un content-length plus long que le message lui meme, mais ca n'a pas l'air de gener Apache. Moi des que je met une valeur plus petite ou plus grande que la realite, il me renvois une erreur.
 
Je sais que mon probleme est asser specialise, mais si quelqu'un pouvait m'indiquer une piste, ca me debloquerais!
par avance, merci.

mood
Publicité
Posté le 16-04-2003 à 03:38:01  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C/C++]HTTP Requete POST pour uploader un fichier

 

Sujets relatifs
Erreur d'execution 94 avec MS VB ==> besoin aide requete SQL[Access] acceder à une requête pas encore executée
[ASP] Comment uploader des fichiers sur un ftp ?Requête mise à jour dans ACCESS 97
Integration d un fichier video dans une appli C++temps d'execution d'une requete SQL
Trouver la durée d'un fichier .rmEquivalent d'un META HTTP-REFRESH pour un mail , possible ?
[PHP] Editer un fichier[C] probleme lecture de fichier
Plus de sujets relatifs à : [C/C++]HTTP Requete POST pour uploader un fichier


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR