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 :

Téléchargement de fichier [Archives]


Sujet :

Web & réseau Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 216
    Points : 74
    Points
    74
    Par défaut Téléchargement de fichier
    Bonjour !

    J'ai une application sans Form dans ce style ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    program helloword;
    uses
      Windows;
    var
     a:string;
     
    begin
    a:='teste';
    messagebox(a,'titre');
    end.
    et j'aimerais bien télécharger un fichier qui se trouve sur un serveur web (donc accet ftp ou http) mais je ne trouve pas comment faire avec ce type d'application. Vu que je n'ai pas de form, je ne sais pas ajouter de composant et je ne sais meme pas si cela est possible uniquement avec du code.

    Merci d'avance de me dire comment effectuer ce téléchargement de fichier.

  2. #2
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 152
    Points
    10 152
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    uses
      IdHttp; // ou qqch comme ça
     
    var
      IdHttpCli : TIdHttpCli; // enfin le composant que tu veux
     
    begin
      IdHttpCli := TIdHttpCli.Create(nil);
      try
        ...
      finally
        IdHttpCli.Free;
      end;
    end.
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  3. #3
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Salut!

    Dans une application sans form, même console, il reste possible d'utiliser la plupart des composants, en les créant dynamiquement. Par exemple, voici un petit programme console qui va afficher le nom des fichiers sélectionnés par un TOpenDialog crée dynamiquement, puis attendre l'appui de la touche Entrée pour quitter et libérer le composant :
    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
    PROGRAM Project1;
    {$APPTYPE CONSOLE}
    USES Windows,SysUtils,Dialogs;
     
    VAR OpenDialog1:TOpenDialog;
        x:Integer;
     
    BEGIN
     OpenDialog1:=TOpenDialog.Create(NIL);
     OpenDialog1.Options:=[ofHideReadOnly,ofAllowMultiSelect,ofEnableSizing];
     IF(OpenDialog1.Execute)THEN
      FOR x:=1 TO OpenDialog1.Files.Count DO
       Writeln(IntToStr(x)+' = '+OpenDialog1.Files[x-1]);
     Writeln(#13#10+'Appuyez sur Entree pour quitter...');
     REPEAT UNTIL((GetAsyncKeyState(VK_RETURN)AND 32768)<>0);
     OpenDialog1.Free;
    END.
    Bien entendu, il est possible d'utiliser ce programme sans la console, à+
    De retour parmis vous après 10 ans!!

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 216
    Points : 74
    Points
    74
    Par défaut
    Merci, je me suis donc servit surtout de ce que sjrd a expliqué et j'ai fait un petit mélange avec le tuto qui a dans le faq de ce site sur le transfere de fichier avec ce composant. J'en obtien donc 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
     
    program teste;
     
    uses
      Windows,
      idHttp, Classes;
     
    var
      Fs : TFileStream;
      IdHTTP1: TIdHTTP;
     
    begin
      IdHTTP1:= TIdHTTP.Create(nil);
      try
        Fs := TFileStream.Create('c:\test.php',fmCreate);
        Get('http://www.site.com/index.php',TStream(fs));
      finally
          IdHTTP1.Free;
      end;
    end.
    Mais j'obtiens tjs une erreur avec le Get :

    Identificateur non déclaré : 'GET'

    vous avez une idées du truc que je dois ajouter ?

    merci

  5. #5
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    De retour parmis vous après 10 ans!!

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 216
    Points : 74
    Points
    74
    Par défaut
    ha ouais j'y pensais vraiment plus a ce truc la mdr

    sinon le truc résolut d'inquiete, j'oubli pas

  7. #7
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Tant que le fichier est accessible via le net et un navigateur web sans mot de passe j'utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Uses UrlMon;
     
    URLDownloadToFile(nil, 'http://www.hoge.com/mapage.html', 'c:\mapage.html', 0, nil);
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  8. #8
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Ton code ne fonctionne pas chez moi Clorish...

    Perso, j'ai réalisé une unité d'upload et download de fichier. Je l'avais d'abord programmé avec idHttp (INDY). Mais j'ai eu de nombreux bugs lorsque je faisais des téléchargement simultannés. J'ai simplement remplacé idHttp par THttpCli (ICS non bloquant), et plus de problèmes! Pour réaliser l'upload, j'utilise un script PHP sur le serveur qui s'occupe de receptionner le fichier temporaire et de réaliser le déplacement du fichier dans le bon dossier. Cela ressemble finalement à un client FTP, sauf que l'accès n'est pas limité en nombre d'utilisateur et on peut se passer de devoir fournir un login... Par contre, j'ai été obligé de scinder les fichiers trop volumineux car le serveur impose une taille limite d'upload (max_upload_size).

    à+
    De retour parmis vous après 10 ans!!

  9. #9
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    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
     
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
     
    type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    Uses Urlmon;
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    URLDownloadToFile(nil, 'http://digitalisland.free.fr/index.html', 'c:\mapage.html', 0, nil);
     
    end;
     
    end.
    Ce code fonctionne tres bien chez moi.
    Form simple avec 1 boutton.
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  10. #10
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Ton code fonctionne aussi chez moi!
    Je ne sais pas pourquoi il n'a pas marché tout à l'heure alors que j'ai fait un test identique...
    Bref, existerait-il une solution pour obtenir une progressbar?
    De retour parmis vous après 10 ans!!

  11. #11
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Il me semble vi ....
    REgarde dans les API de UrlMon.
    Je ne me suis pas penché dessus mais je crois qu'il existe une procedure qui prends un parametre une fonction de "Progression"
    qui sera appele periodiquement.

    Je te cherche ca.
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  12. #12
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Tu as le dernier parametre de la fonction de type IBindStatusCallback :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
      IBindStatusCallback = interface
        ['{79eac9c1-baf9-11ce-8c82-00aa004ba90b}']
        function OnStartBinding(dwReserved: DWORD; pib: IBinding): HResult; stdcall;
        function GetPriority(out nPriority): HResult; stdcall;
        function OnLowResource(reserved: DWORD): HResult; stdcall;
        function OnProgress(ulProgress, ulProgressMax, ulStatusCode: ULONG;
          szStatusText: LPCWSTR): HResult; stdcall;
        function OnStopBinding(hresult: HResult; szError: LPCWSTR): HResult; stdcall;
        function GetBindInfo(out grfBINDF: DWORD; var bindinfo: TBindInfo): HResult; stdcall;
        function OnDataAvailable(grfBSCF: DWORD; dwSize: DWORD; formatetc: PFormatEtc;
          stgmed: PStgMedium): HResult; stdcall;
        function OnObjectAvailable(const iid: TGUID; punk: IUnknown): HResult; stdcall;
      end;
    Ya une fonction "Progress"
    Fouille par la ;p
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  13. #13
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Ça à l'air terrible!! :o
    Merci Clorish pour ta recherche! En plus, grâce à ces évènements, je suppose qu'il est possible de récupérer le flux en mémoire plutôt que dans un fichier... Je vais essayer d'obtenir l'upload de fichier avec progression en utilisant un script PHP & UrlMon (ce week-end). Je n'ai pas encore regardé, mais si ça se trouve, il existe déjà la fonction FileUpLoadToURL... Je vous tiens au courant!
    De retour parmis vous après 10 ans!!

  14. #14
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2002
    Messages : 245
    Points : 154
    Points
    154
    Par défaut Telechargement de fichiers avec la progressBar
    Bonjour,

    Je voudrai telecharger des fichiers tout en affichant la progression du telechargement.
    J'ai été orienté vers TIdHTTP, mais d'après ce que j'ai compris, ça permet de transférer le contenu d'un fichier et non le fichier lui-même.
    J'ai cru savoir aussi que je pouvait utiliser aussi URLDownloadToFile, ca marche bien pour moi, sauf que je n'arrive pas a mettre à jour ma progressbar.
    PS: J'utilise Delphi 7 sous XP et je telecharge d'un serveur HTTP (sans mot de passe ni username).
    Merci.

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    633
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 633
    Points : 711
    Points
    711
    Par défaut Re: Telechargement de fichiers avec la progressBar
    Bonjour,
    Citation Envoyé par Ben_Le_Cool
    J'ai été orienté vers TIdHTTP, mais d'après ce que j'ai compris, ça permet de transférer le contenu d'un fichier et non le fichier lui-même.
    Je reste perplexe : qu'appelles tu "le fichier lui-même" si ce n'est pas son contenu ?
    Compilation sans erreur ne signifie pas programme sans erreur.
    L'indentation n'a pas été imaginée pour faire beau, mais pour faciliter la lecture des programmes.

  16. #16
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Justement j'allais te proposer URLDownloadToFile de l'unite URLMon

    PArmis les arguments de la fontion il y en a un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    StatusCB : IBindStatusCallback;
    J'ai Declarté le type suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Type TBind = Class(TObject, IBindStatusCallback);
    et Voila le retour du compilo :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Construction
      [Erreur] Unit1.pas(24): Identificateur non déclaré : 'OnStartBinding'
      [Erreur] Unit1.pas(24): Identificateur non déclaré : 'GetPriority'
      [Erreur] Unit1.pas(24): Identificateur non déclaré : 'OnLowResource'
      [Erreur] Unit1.pas(24): Identificateur non déclaré : 'OnProgress'
      [Erreur] Unit1.pas(24): Identificateur non déclaré : 'OnStopBinding'
      [Erreur] Unit1.pas(24): Identificateur non déclaré : 'GetBindInfo'
      [Erreur] Unit1.pas(24): Identificateur non déclaré : 'OnDataAvailable'
      [Erreur] Unit1.pas(24): Identificateur non déclaré : 'OnObjectAvailable'
      [Erreur] Unit1.pas(24): Identificateur non déclaré : 'QueryInterface'
      [Erreur] Unit1.pas(24): Identificateur non déclaré : '_AddRef'
      [Erreur] Unit1.pas(24): Identificateur non déclaré : '_Release'
      [Erreur fatale] Project1.dpr(5): Impossible de compiler l'unité utilisée 'Unit1.pas'

    Je pense que ceci devrais t'interesser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      [Erreur] Unit1.pas(24): Identificateur non déclaré : 'OnProgress'
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  17. #17
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2002
    Messages : 245
    Points : 154
    Points
    154
    Par défaut Re: Telechargement de fichiers avec la progressBar
    Citation Envoyé par thewho
    Bonjour,
    Citation Envoyé par Ben_Le_Cool
    J'ai été orienté vers TIdHTTP, mais d'après ce que j'ai compris, ça permet de transférer le contenu d'un fichier et non le fichier lui-même.
    Je reste perplexe : qu'appelles tu "le fichier lui-même" si ce n'est pas son contenu ?
    La différence c'est qu'au lieu d'avoir un fichier en resultat, t'as un String.


    Merci Clorish, je vais essayer de voir ce que ça donne

  18. #18
    Membre confirmé
    Avatar de lil_jam63
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    447
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 447
    Points : 600
    Points
    600
    Par défaut
    Voilà un exemple rapide de téléchargement avec ProgressBar en utilisant l'interface IBindStatusCallback (urlmon).
    ----------------------------------------------------
    Avant de poster, pensez à utiliser les différents outils à votre disposition:
    Google, la FAQ et le moteur de recherche.

  19. #19
    Membre confirmé
    Avatar de lil_jam63
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    447
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 447
    Points : 600
    Points
    600
    Par défaut
    Je viens de jeter un oeil sur le post que tu donnes en lien Sub0, je pense que tu peux te débrouiller pour faire un upload avec progressbar juste en utilisant les fonctions de wininet.
    - InternetOpen()
    - InternetConnect()
    - FtpSetCurrentDirectory()
    - InternetWriteFile()
    - InternetCloseHandle()

    prototype de InternetWriteFile():
    BOOL InternetWriteFile(
    HINTERNET hFile,
    LPCVOID lpBuffer,
    DWORD dwNumberOfBytesToWrite,
    LPDWORD lpdwNumberOfBytesWritten
    );
    et tu utilises le paramètre lpdwNumberOfBytesWritten pour la progression.
    ----------------------------------------------------
    Avant de poster, pensez à utiliser les différents outils à votre disposition:
    Google, la FAQ et le moteur de recherche.

  20. #20
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Lil_jam63 !

    J'en ai profité pour fusionner les sujets...

    En ce qui concerne l'upload, j'utilise un formulaire Html (méthode POST) avec un champs Input File...
    En fait, je simule la validation d'un formulaire d'upload http.
    Sur mon serveur se trouve un script PHP qui se charge de receptionner les données.
    Une fois que l'upload et le download seront au point, je posterai ici la solution.
    En attendant, si vous avez des remarques, des suggestions... je suis preneur !
    De retour parmis vous après 10 ans!!

Discussions similaires

  1. [HTML] Téléchargement de fichiers .txt
    Par raj dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 05/01/2006, 18h08
  2. Réponses: 5
    Dernier message: 08/12/2005, 20h13
  3. Téléchargement de fichiers par HTTP / FTP
    Par Gladiator dans le forum Serveurs (Apache, IIS,...)
    Réponses: 2
    Dernier message: 07/12/2005, 11h28
  4. Réponses: 5
    Dernier message: 05/11/2005, 17h53
  5. [SOAP][XML][C#.NET] Téléchargement de fichiers XML
    Par juniorAl dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 27/06/2005, 09h35

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