IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Web & réseau Delphi Discussion :

Naviguer avec les composants Indy


Sujet :

Web & réseau Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2003
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 17
    Points : 13
    Points
    13
    Par défaut Naviguer avec les composants Indy
    Bonjour,

    J'ai besoin de d'uploader un fichier sur un matériel pour le mettre à jour.

    Pour se faire je dispose d'une URL qui me donne accès au formulaire de chargement du fichier. Je dois donc taper l'url http://<ip>/toto/toto.html.

    J'arriver alors sur un formulaire:
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    <html>
    <head><title>Mise &agrave; jour de l'application</title></head>
    <body>
    <h2>Mise &agrave; jour de l'application</h2>
    <form action="/toto/toto.html" METHOD="post" ENCTYPE="multipart/form-data" >
    <HR>Cette page permet le t&eacute;l&eacute;chargement et la mise à jour de l'application.<HR><BR><B>Application courante :</B><BR><BR><table BORDER=2CELLPADDING=2CELLSPACING=2>
    <th>
    Parametre</th>
    <th>
    Valeur</th>
    <tr>
    <td>
    Version<td>
    1.61</tr>
    <tr>
    <td>
    Build-Date<td>
    22/01/07</tr>
    </table>
    <BR><HR><BR>S&eacute;lectionnez la nouvelle application &agrave; charger :<BR><input type="file" name="appli_file" size="40" >
    <BR><BR><input type="submit" name="submit" value="Lancer la mise &agrave; jour" >
    <BR><BR><HR></form>
    </body>
    </html>

    Si j'utilise un composant IdHTTP pour poster un formulaire en remplaçant /toto/toto.html par http://<ip>/toto/toto.html, j'arrive toujours sur la page qui permet de charger le fichier, tandis que si je fais tout sous IE j'arrive à une page de confirmation.

    Je veux que tout cela soit transparent pour les utilisateurs mais je ne vois pas comment accéder à la première page (http://<ip>/toto/toto.html) puis continuer ma navigation (chargement puis validation) avec les lien relatifs (/toto/toto.hmlt) avec les composants Indy.

    Merci d'avance pour vos réponses

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 612
    Points : 25 303
    Points
    25 303
    Par défaut
    Je n'ai pas bien compris le problème, tu nous expliques le constat ou ce que tu souhaites obtenir ?

    Tu peux aussi utiliser un TWebBrower avec les interfaces comme IHTMLElement, tu pourras automatiser le clic comme si c'était un utilisateur qui le faisait !

    Pense que via TIdHTTP cela n'executera pas le JS, la confirmation est problablement un JS qui lance ensuite la procédure de chargement

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2003
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    Bonjour,

    Merci de ta réponse et voici quelques précisions.

    Auparavant je passais par le webbrowser et je me servais d’évènements clavier pour écrire l'emplacement du fichier.

    Cela a marché pendant deux ans, mais maintenant la zone est en lecture seule lors du chargement de la page donc cette méthode ne marche plus.

    D'où mon besoin de passer par les composants Indy.

    J'ai d'abord fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    MultiPartFormDataStream := TIdMultiPartFormDataStream.Create;
      try
        IdHTTP1.Request.ContentType := 'multipart/form-data';
        //"Joint" le fichier
        MultiPartFormDataStream.AddFile('appli_file', 'C:\ProgramData\Telerel\Travail_Cpl3\FIRMWARE.BIN' , 'multipart/form-data');
        MultiPartFormDataStream.AddFormField('submit','Lancer la mise à jour');
        MultiPartFormDataStream.Position := 0;
        Memo1.Lines.Clear;
        Memo1.Lines.add(IdHTTP1.Post('http://'+Edit1.Text+'/loader/load.html', MultiPartFormDataStream));
        Memo1.lines.SaveToFile('toto2.html');
      finally
        MultiPartFormDataStream.Free;
      end;
    Cela me ramène toujours sur la page de démarrage, il ne prend pas en compte l'envoi du fichier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    MultiPartFormDataStream := TIdMultiPartFormDataStream.Create;
      try
        IdHTTP1.Request.ContentType := 'multipart/form-data';
        //"Joint" le fichier
        MultiPartFormDataStream.AddFile('appli_file', 'C:\ProgramData\Telerel\Travail_Cpl3\FIRMWARE.BIN' , 'application/octet-stream');
        MultiPartFormDataStream.AddFormField('submit','Lancer la mise à jour');
        MultiPartFormDataStream.Position := 0;
        Memo1.Lines.Clear;
        Memo1.Lines.add(IdHTTP1.Post('http://'+Edit1.Text+'/loader/load.html', MultiPartFormDataStream));
        Memo1.lines.SaveToFile('toto2.html');
      finally
        MultiPartFormDataStream.Free;
      end;
    Là le chargement du fichier est sans fin et la communication finie par se perdre.

    Sinon, il n' y a pas de java script.

Discussions similaires

  1. Envoi Mail avec les composants INDY via SSL
    Par NorexaMS dans le forum Web & réseau
    Réponses: 1
    Dernier message: 30/08/2011, 06h41
  2. [Lazarus] Serveur de courrier avec les composants Indy
    Par ChPr dans le forum Lazarus
    Réponses: 9
    Dernier message: 29/05/2009, 10h16
  3. Réponses: 1
    Dernier message: 12/02/2008, 09h29
  4. Envoi de mails avec les composants Indy
    Par Pascal Fonteneau dans le forum Web & réseau
    Réponses: 4
    Dernier message: 21/01/2008, 20h27
  5. [TCP] Client/Serveur avec les composants Indy
    Par bakaneko dans le forum C++Builder
    Réponses: 2
    Dernier message: 14/02/2007, 12h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo