Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Envoyer un fichier via HTTP  (Lu 1877 fois)

0 Membres et 1 Invité sur ce sujet

imote

  • Newbie
  • *
  • Messages: 20
    • Voir le profil
Envoyer un fichier via HTTP
« le: Juin 23, 2014, 09:35:42 pm »
Bonjour :)
Alors j'essaie de me débrouiller en envoyant un fichier via HTTP POST (avec SFML2.1 bien entendu).
Le problème est que je n'arrive pas à envoyer correctement le fichier, les headers qu'envoient les navigateurs contiennent des informations étrange tel que des "boundary".
Les requête que j'envoie avec SFML n'en contient aucunement.
Voici le contenu du header :
["connection"]=>
  string(5) "close"
  ["content-length"]=>
  string(1) "5"
  ["content-type"]=>
  string(19) "multipart/form-data"
  ["filename"]=>
  string(5) "a.png"
  ["from"]=>
  string(17) "user@sfml-dev.org"
  ["host"]=>
  string(10) "i.imote.eu"
  ["mime-type"]=>
  string(9) "image/png"
  ["name"]=>
  string(4) "file"
  ["user-agent"]=>
  string(19) "libsfml-network/2.x"

Et voici le contenu de body :

string(5) "‰PNG
"

Ainsi je ne sais pas si le fichier est vraiment envoyé ou non, sachant qu'un isset($_FILES['file']) retourne faux.
Je suppose que je dois utiliser une autre librairie pour effectuer ce genre d'opération ?
Le problème vient peut être aussi de la copie du fichier dans le body.
Premièrement j'ai essayé en faisant une boucle getline() puis j'ai mis cette méthode :

std::ifstream bodyFile(pathToFile.c_str());
       
        if (bodyFile)
        {
                std::string bodyContent(static_cast<std::stringstream const&>(std::stringstream() << bodyFile.rdbuf()).str());
                request.setBody(bodyContent);
        }


Même si ce bout de code est faux, j'obtiens le même résultat que la boucle getline().
Je précise bien que la méthode est Post et j'ai mis HTTP 1.1.
Le chemin vers le fichiers est correct.
Toutes les autres opérations que j'ai effectué sur request sont visible dans le header, en cas de manque de visibilité je peux les décrire.

En résumé mon problème est comment envoyer un fichier ? J'ai essayé avec un navigateur (et comparé les headers par la même occasion) et cela fonctionne parfaitement.

EDIT : Je viens de penser à Qt, je vais essayer s'il peut faire cela. (J'utilise SFML dans une application Qt pour ses capacités FTP et j'ai essayé pour HTTP mais on va voir si Qt est pas plus efficace)

En espérant ne pas perdre votre temps et avoir été clair,
Cordialement,
Imote
« Modifié: Juin 23, 2014, 09:43:21 pm par imote »