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 :

Envoyer un fichier, par le biais d'un script


Sujet :

Web & réseau Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 95
    Points : 45
    Points
    45
    Par défaut Http Post avec INDY, PARAMETRES pas envoyé, Pourquoi??


    J'aurais besoin d'un petit coup de main de votre part
    En fait je souhaiterai envoyer un fichier par un script, c'est à dire :
    j'ai un TJpegImage et je souhaiterai l'envoyer par mon script :
    http://monSite.com/monScript.php?idI...=MONTJPEGIMAGE

    Il faudrait convertir mon JpegImage en quoi pour pouvoir faire ça?

    Je sais déjà appeler un script simple, qui me retourne quelque chose grâce a un post de Sub0 que j'ai retrouvé.

    Quelqu'un pourrait m'aider?

    Merci beaucoup

  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 457
    Points
    28 457
    Par défaut
    tu dois envoyer ton image par un POST, avec l'entête qui va bien et à la suite l'image en binaire...

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 95
    Points : 45
    Points
    45
    Par défaut
    Euh, c'est à dire?

    Pour le moment je fais :

    Code : 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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    Function TForm1.GetHTML(AUrl: String): String;
    Var
            databuffer: Array[0..4095] Of Char;
            hSession, hfile: hInternet;
            dwindex, dwcodelen, dwread, dwNumber: Cardinal;
            dwcode: Array[1..20] Of Char;
            res: PChar;
    Begin
            Result := '';
     
            //AUrl := AUrl+Fichier;
            hSession := InternetOpen('InetURL:/1.0', INTERNET_OPEN_TYPE_PRECONFIG, Nil, Nil, 0);
     
            If (Assigned(hsession)) Then Begin
     
            hfile := InternetOpenUrl(hsession, PChar(AUrl), Nil, 0, INTERNET_FLAG_RELOAD, 0);
            dwIndex := 0;
            dwCodeLen := 10;
            HttpQueryInfo(hfile, HTTP_QUERY_STATUS_CODE, @dwcode, dwcodeLen, dwIndex);
            res := pchar(@dwcode);
            dwNumber := SizeOf(databuffer) - 1;
     
            If ((res = '200') Or (res = '302')) Then
            Begin
                    While (InternetReadfile(hfile, @databuffer, dwNumber, DwRead)) Do Begin
                            If (dwRead = 0) Then
                                    Break;
                            databuffer[dwread] := #0;
                            Result := Result + PChar(@databuffer);
                    End;
            End
            Else
                    Result := 'Status:' + res;
     
            If (Assigned(hfile)) Then
                    InternetCloseHandle(hfile);
            End;
     
            InternetCloseHandle(hsession);
     
            Fichier.Free;
     
    End;
    Je comprend pas encore tout ce code
    Mais le post marche comment?

    Merci beaucoup

  4. #4
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 457
    Points
    28 457
    Par défaut
    un petit tour sur google ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 95
    Points : 45
    Points
    45
    Par défaut
    Ben justement ca fait deux heures que je chercher sur google, et je ne trouve rien de clair...

    D'ailleurs ton lien est payant...

    Je comprend pas ce header...

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 95
    Points : 45
    Points
    45
    Par défaut
    Salut,

    Quelqu'un pourrait m'expliquer ce qu'il faut mettre dans un header pour envoyer un fichier? svp...

    Merci

  7. #7
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 219
    Points : 1 438
    Points
    1 438
    Par défaut
    Pourquoi ne pas analyser d'abord la FAQ Delphi

    Est-ce qu'il s'agit d'uploader un fichier vers un serveur web?
    Comment soumettre un formulaire de type file, c'est ça le POST dont tout le monde parle

    Ou est-ce que c'est du FTP? Si c'est une application que vous êtez entrain d'écrire, utilisez comme protocole de transfert le FTP avec le composant IdFTP

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 95
    Points : 45
    Points
    45
    Par défaut
    Oui c'est bien cela que je veux faire, le POST n
    Donc c'est bon j'ai installer indy et suivis le tutoriel seulement, j'ouvre bien le fichier je le séléctionne et tout, mais des que je veux l'uploader, sa ne marche pas, la fonction idHTTP1.Post retourne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <br />
    <b>Notice</b>:  Undefined index:  dossier in <b>C:\Program Files\EasyPHP 3.0\www\*****\upload\uploadQuiMarche.php</b> on line <b>2</b><br />
    <br />
    <b>Notice</b>:  Undefined variable: HTTP_POST_FILES in <b>C:\Program Files\EasyPHP 3.0\www\*****\upload\uploadQuiMarche.php</b> on line <b>11</b><br />
    <br />
    <b>Notice</b>:  Undefined variable: HTTP_POST_FILES in <b>C:\Program Files\EasyPHP 3.0\www\*****\upload\uploadQuiMarche.php</b> on line <b>12</b><br />
    <br />
    <b>Notice</b>:  Undefined variable: HTTP_POST_FILES in <b>C:\Program Files\EasyPHP 3.0\www\*****\upload\uploadQuiMarche.php</b> on line <b>13</b><br />
    <br />
    <b>Notice</b>:  Undefined variable: HTTP_POST_FILES in <b>C:\Program Files\EasyPHP 3.0\www\*****\upload\uploadQuiMarche.php</b> on line <b>14</b><br />
    Le fichier spécifié est introuvable ou vide!
    C'est bizarre je fais ce qui est indiqué...
    Comment faire?

    En tout cas, merci de m'aider

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 95
    Points : 45
    Points
    45
    Par défaut
    C'est bizarre d'aprés mes test, quand mon script est appellé aucun parametres n'est arrivé, ni dossier, ni userfile, de ce code :

    Code : 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
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
      MultiPartFormDataStream: TIdMultiPartFormDataStream;
     
    begin
     
      if OpenDialog1.Execute then
      begin
        MultiPartFormDataStream := TIdMultiPartFormDataStream.Create;
        try
          //"Remplis" la variable "dossier" pour spécifier l'upload dans /test
          MultiPartFormDataStream.AddFormField('dossier','/test'); 
          //"Joint" le fichier
          MultiPartFormDataStream.AddFile('userfile', OpenDialog1.FileName, 'multipart/form-data'); 
          MultiPartFormDataStream.Position := 0;
          //Poste !
          IdHTTP1.Post('http://localhost/******/upload/upload.php', MultiPartFormDataStream);
        finally
          MultiPartFormDataStream.Free;
        end;
      end;
     
    end;
    et mon script est :
    Code : 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
    26
    27
    28
    29
     
    <?php 
    $dossier=$_POST['dossier']; 
    if($dossier<>'') { 
       if(substr($dossier,strlen($dossier)-1,1)=='/')$dossier.='/'; 
       $dir=@explode('/',$dossier); $dossier=''; 
       for($x=0;$x<count($dir);$x++) { 
          $dossier.=$dir[$x].'/'; 
          if(! @is_dir($dossier))@mkdir($dossier,0777); } 
       if(! @is_dir($dossier))die("Le dossier est invalide! (".$dossier.")"); } 
     
    $filenameHTTP=$HTTP_POST_FILES['userfile']['name']; 
    $typeHTTP=$HTTP_POST_FILES['userfile']['type']; 
    $sizeHTTP=$HTTP_POST_FILES['userfile']['size']; 
    $tmpfileHTTP=$HTTP_POST_FILES['userfile']['tmp_name']; 
    if((empty($filenameHTTP))or($sizeHTTP<=0)) 
       die("Le fichier spécifié est introuvable ou vide!"); 
     
    if(@is_uploaded_file($tmpfileHTTP)) { 
       if(@eregi('.php',$filenameHTTP))$filenameHTTP.='.txt'; 
       if(filesize($tmpfileHTTP)<>$sizeHTTP) 
          die("Erreur de téléchargement du fichier!"); 
       if(@move_uploaded_file($tmpfileHTTP,$dossier.$filenameHTTP)) { 
          @chmod($filenameHTTP,0777); 
          echo "Fichier correctement uploadé!<br>". 
          $dossier.$filenameHTTP." (".round($sizeHTTP/1024)." ko)<br>"; 
       } else die("Une erreur est survenue lors du téléchargement!"); 
    } else die("Erreur de téléchargement du fichier!"); 
    ?>
    J'ai juste fais un copié coller de ce tuto : http://delphi.developpez.com/faq/?pa...formulairefile

    C'est normal???

    Merci de votre aide

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 95
    Points : 45
    Points
    45
    Par défaut
    En fait je pense que je ne contrôle pas bien l'envoi des paramètres...
    C'est a dire qu'aucun paramètre n'est envoyé quand j'appelle mon upload.php...
    Je fais quelque chose mal la :
    Code : 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
     
    var
      MultiPartFormDataStream: TIdMultiPartFormDataStream;
     
    begin
     
      if OpenDialog1.Execute then
      begin
        MultiPartFormDataStream := TIdMultiPartFormDataStream.Create;
        try
          //"Remplis" la variable "dossier" pour spécifier l'upload dans /test
          MultiPartFormDataStream.AddFormField('dossier','/test'); 
          //"Joint" le fichier
          MultiPartFormDataStream.AddFile('userfile', OpenDialog1.FileName, 'multipart/form-data'); 
          MultiPartFormDataStream.Position := 0;
          //Poste !
          IdHTTP1.Post('http://localhost/******/upload/upload.php', MultiPartFormDataStream);
        finally
          MultiPartFormDataStream.Free;
        end;
      end;
    Pourquoi je n'envoi rien avec ca??

    Un peu d'aide svp?

Discussions similaires

  1. Envoyer un fichier par TCP/IP
    Par slimdre dans le forum C++Builder
    Réponses: 10
    Dernier message: 24/01/2011, 10h37
  2. Envoyer un fichier par mail
    Par kmaniche dans le forum C++Builder
    Réponses: 21
    Dernier message: 15/11/2009, 20h27
  3. Envoyer un fichier par email
    Par portu dans le forum Delphi
    Réponses: 3
    Dernier message: 30/05/2006, 11h02
  4. [Mail] Envoyer un fichier par mail
    Par Oberown dans le forum Langage
    Réponses: 3
    Dernier message: 24/10/2005, 15h55
  5. Réponses: 1
    Dernier message: 19/08/2003, 16h11

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