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

Entrée/Sortie Java Discussion :

Envoi de fichier en POST via une URL vers une page php


Sujet :

Entrée/Sortie Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2011
    Messages : 40
    Points : 23
    Points
    23
    Par défaut Envoi de fichier en POST via une URL vers une page php
    Bonjour à tous!

    Je dois, dans le cadre de mon stage, réaliser une application Java. J'ai déjà, en partie grâce au forum, réalisé diverses fonctionnalités de cette application.

    Cependant, je butte sur le point précisé dans le sujet: je n'arrive pas à envoyer de fichier en POST via une URL.

    J'ai déjà certaines pistes sur le forum, notamment concernant la bibliothèque HttpClient que j'ai insérée dans mon projet.

    Par contre, j'essaie d'utiliser certaines méthodes indiquée sur le forum et j'ai l'impression que celles-ci sont dépréciées. J'ai également trouvé qu'on pouvait les remplacer mais je n'y suis pas parvenu.

    J'avais trouvé ça:

    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
     
    HttpClient client = new HttpClient();
    	        MultipartPostMethod mPost = new MultipartPostMethod(url);
     
     
    	        // Send any XML file as the body of the POST request
    	        File f1 = new File("C:/aa.jpg");
     
    	        try {
    				mPost.addParameter("monFichier", f1);
     
    			} catch (FileNotFoundException e) {
    				// TODO Bloc catch auto-généré
    				e.printStackTrace();
    			}
     
    	        try {
    				int statusCode1 = client.executeMethod(mPost);
     
    				if (statusCode1 == HttpStatus.SC_OK) {
                        appendMessage(
                            "Upload complete, response=" + mPost.getResponseBodyAsString()
                        );
                    } else {
                        appendMessage("Upload failed, response=" + HttpStatus.getStatusText(statusCode1) + "   "+mPost.getResponseBodyAsString()
                        );
                    }
     
    			} catch (HttpException e) {
    				// TODO Bloc catch auto-généré
    				e.printStackTrace();
    			} catch (IOException e) {
    				// TODO Bloc catch auto-généré
    				e.printStackTrace();
    			}
     
     
    	        System.out.println("statusLine>>>" + mPost.getStatusLine());
    	        mPost.releaseConnection();
    	        System.out.println("OK");
    Mais mon eclipse me dit que MultipartPostMethod est déprécié et je n'arrive pas à la remplacer malgré la doc

    Le fichier était récupéré avec ce code php :
    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
     
    TEST
    <br>
     <?php
    // BIIEN CHANGER monFichier selon parametre mis dans JAVA
     if(isset($_FILES['monFichier']))
     {
     unset($erreur);
     $extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
     $taille_max = 1000000;
     // DOSSIER DESTINATION
     $dest_dossier = 'photo/';
     // utilisez également des slashes sous windows : $dest_dossier = 'd:/damien/photos/';
     // vérifications
     if( !in_array( substr(strrchr($_FILES['monFichier']['name'], '.'), 1), $extensions_ok) )
     {
     $erreur = 'Veuillez s&eacute;lectionner un fichier de type png, gif ou jpg !';
     }
     elseif( file_exists($_FILES['monFichier']['tmp_name'])
     and filesize($_FILES['monFichier']['tmp_name']) > $taille_max)
     {
     $erreur = 'Votre fichier doit faire moins de 500Ko !';
     }
     // copie du fichier
     if(!isset($erreur))
     {
     $dest_fichier = basename($_FILES['monFichier']['name']);
     // formatage nom fichier
     // enlever les accents
     $dest_fichier = strtr($dest_fichier,
     'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
     'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
     // remplacer les caracteres autres que lettres, chiffres et point par _
     $dest_fichier = preg_replace('/([^.a-z0-1]+)/i', '_', $dest_fichier);
     // copie du fichier
     move_uploaded_file($_FILES['monFichier']['tmp_name'], $dest_dossier.$dest_fichier);
     echo($_FILES['monFichier']['tmp_name']);
     }
     else{
     echo($erreur);
     }
     } 
     ?>
    Si vous avez des idées de corrections ou carrément d'autres pistes, je suis preneur car là je sèche complètement et j'ai déjà perdu pas mal de temps...

    Merci d'avance et bon courage à tous!

    @+

    Thomas.

  2. #2
    Membre averti Avatar de ZnhaarX
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 146
    Points : 307
    Points
    307
    Par défaut
    Salut,

    Il me semble que tu te complique la vie pour rien.
    Moi si j'ai quelque chose à faire passer dans une requête POST, je pense avant tout à la sérialisation binaire ou ce genre de choses.
    http://anisfrikha.developpez.com/tut...ava-io/#LIII-A

    Donc concrètement, tu convertis ton fichier en flux binaire que tu pourras passer via ta requête POST. Une fois sur le serveur, tu récupères ton flux binaire et le tour est joué.

    Bonne chance!

    [Edit] http://www.developpez.net/forums/d55...ete-http-post/
    « War is peace. Freedom is slavery. Ignorance is strength. » - George Orwell

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    sauf que si tu fais ça à la main, tu va devoir te casser la nenette à tout encoder à la main dans le format multipart/form-data, alors que httpclient le fait déjà pour toi.

    La raison pour laquellle les méthodes sont dépréciées, c'est que httpclient a completemetn changer d'api entre la version 3 et 4
    Et que la doc de 4 est, parcellaire au possible concernant le multipart

    Voici un exemple de 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
    25
    public void testUpload() throws Exception {
    	HttpClient httpclient = new DefaultHttpClient();
    	HttpPost httppost = new HttpPost(myUploadUrl);
     
    	MultipartEntity reqEntity = new MultipartEntity(
    		HttpMultipartMode.BROWSER_COMPATIBLE);
     
    	reqEntity.addPart("string_field",
    		new StringBody("field value"));
     
    	FileBody bin = new FileBody(
    		new File("/foo/bar/test.png"));
    	reqEntity.addPart("attachment_field", bin );
     
    	httppost.setEntity(reqEntity);
     
    	System.out.println("executing request " + httppost.getRequestLine());
    	HttpResponse response = httpclient.execute(httppost);
    	HttpEntity resEntity = response.getEntity();
     
    	if (resEntity != null) {
    		String page = EntityUtils.toString(resEntity);
    		System.out.println("PAGE :" + page);
    	}
    }
    tiré d'ici
    http://radomirml.com/2009/02/13/file...ons-httpclient

    ca date de la 4 alpha, mais bon ca devrais t'aider.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2011
    Messages : 40
    Points : 23
    Points
    23
    Par défaut
    Bonjour,

    Merci pour vos messages!

    Rien à faire! Ça fait 3 jours que je suis dessus et je n'y arrive toujours pas!

    Voilà ou j'en suis:
    pour faire ce que je souhaite, le mieux est que j'utilise HttpClient.
    Sauf qu’effectivement, tous les exemples que je trouve sur les forums utilisent des méthodes dépréciées ou des librairies non disponibles.

    Je suis en train de tout mélanger!

    J'aurai donc besoin de savoir quelle méthode non dépréciée je peux utiliser pour envoyer un fichier en post sur une URL et quelles librairies (lien?) importer.

    Je suis allé voir ce lien:
    http://radomirml.com/2009/02/13/file...ons-httpclient

    J'ai crée un projet incluant ce code afin de la tester.
    Lorsque je l'exécute, j'ai une fenêtre qui s'ouvre:
    Sélection de l'application Java:
    Sélectionnez le type : ? = tout caractère, * = toute chaîne, TZ = fuseau horaire.
    Elements correspondants : AvalonLoggerTestCase - org.apache.commons.logging.avalon

    Je ne sais pas trop à quoi correspond cette fenêtre.
    Je choisis donc *
    J'obtiens cette erreur:
    JVM Launcher : Could not find themain class:
    org.apache.commons.logging.avalon.AvalonLoggerTestCase
    Program will exit

    et dans la console:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    java.lang.NoClassDefFoundError: org/apache/avalon/framework/logger/Logger
    Caused by: java.lang.ClassNotFoundException: org.apache.avalon.framework.logger.Logger
    	at java.net.URLClassLoader$1.run(Unknown Source)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.net.URLClassLoader.findClass(Unknown Source)
    	at java.lang.ClassLoader.loadClass(Unknown Source)
    	at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    	at java.lang.ClassLoader.loadClass(Unknown Source)
    Je vous passe le code de la méthode:
    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
     
    import java.io.File;
     
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.entity.mime.HttpMultipartMode;
    import org.apache.http.entity.mime.MultipartEntity;
    import org.apache.http.entity.mime.content.FileBody;
    import org.apache.http.entity.mime.content.StringBody;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.apache.http.util.EntityUtils;
     
    public class test {
    	public void testUpload() throws Exception {
    		DefaultHttpClient httpclient = new DefaultHttpClient();
    		String  myUploadUrl = "http://.....envoiRetour.php";
    		HttpPost httppost = new HttpPost(myUploadUrl);
     
    		MultipartEntity reqEntity = new MultipartEntity(
    				HttpMultipartMode.BROWSER_COMPATIBLE);
     
    		reqEntity.addPart("string_field", new StringBody("field value"));
     
    		FileBody bin = new FileBody(new File("/test.png"));
    		reqEntity.addPart("attachment_field", bin);
     
    		httppost.setEntity(reqEntity);
     
    		System.out.println("executing request " + httppost.getRequestLine());
    		HttpResponse response = httpclient.execute(httppost);
    		HttpEntity resEntity = response.getEntity();
     
    		if (resEntity != null) {
    			String page = EntityUtils.toString(resEntity);
    			System.out.println("PAGE :" + page);
    		}
    	}
    }
    Merci d'avance pour votre aide!

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Si vous voulez utilsier les anciens code, utilisez l'ancien version (httpclient 3.x).

    Votre message dans la console indique qu'il vous manque la librairie avalon logger, ce qui est curieux car httpclient n'en dépend pas (il utilise commons logging)

    Je trouve aussi étonnant que vous alliez jouer avec AvalonLoggerTestCase, pourquoi avez vous besoin de ça?

    Les docs sur la version 4 sont ici http://hc.apache.org/httpcomponents-...tutorial/html/

  6. #6
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2011
    Messages : 40
    Points : 23
    Points
    23
    Par défaut
    Effectivement, je crois avoir compris que pour utiliser HttpClient et PostMethod, il me fallait utiliser d'anciennes versions.

    J'ai donc essayé d'importer d'anciennes librairies. Je ne sais pas si j'ai bien fait!

    Ensuite, j’exécute simplement la classe de test citée précédemment.

    Je ne comprends vraiment pas pourquoi Éclipse me renvoie une erreur avec AvalonLoggerTestCase. Je ne comprend pas d’où ça sort!

    Je vais essayer de repartir sur de bonnes bases avec la version 4 mais je commence à perdre espoir...

    Allez, j'y retourne!

  7. #7
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    le code que j'ai donné était pour la 4 pas la 3 Pour la 3 on trouve de la doc partout

  8. #8
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2011
    Messages : 40
    Points : 23
    Points
    23
    Par défaut
    Bon, en utilisant la 3, j'ai réussi à faire un petit projet me permettant de passer une chaine de caractère (ou le contenu d'un fichier texte) à un fichier déposé sur un serveur.

    Par contre, lorsque j'essaie d'adapter et d'inclure ce mini projet à mon application globale, j'ai une erreur à l'exécution :

    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
     
    Exception in thread "Timer-0" java.lang.NoClassDefFoundError: org/apache/commons/codec/DecoderException
    	at org.apache.commons.httpclient.HttpMethodBase.<init>(HttpMethodBase.java:220)
    	at org.apache.commons.httpclient.methods.ExpectContinueMethod.<init>(ExpectContinueMethod.java:93)
    	at org.apache.commons.httpclient.methods.EntityEnclosingMethod.<init>(EntityEnclosingMethod.java:119)
    	at org.apache.commons.httpclient.methods.PostMethod.<init>(PostMethod.java:106)
    	at DAL.PostFichier.transFichiers(PostFichier.java:41)
    	at DAL.verif----------$1.run(verif-----------------.java:111)
    	at java.util.TimerThread.mainLoop(Unknown Source)
    	at java.util.TimerThread.run(Unknown Source)
    Caused by: java.lang.ClassNotFoundException: org.apache.commons.codec.DecoderException
    	at java.net.URLClassLoader$1.run(Unknown Source)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.net.URLClassLoader.findClass(Unknown Source)
    	at java.lang.ClassLoader.loadClass(Unknown Source)
    	at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    	at java.lang.ClassLoader.loadClass(Unknown Source)
    	... 8 more
    Je ne comprends pas bien ce que signifient ces lignes?
    Il y a une classe qui est non trouvée?
    Pourtant, il me semble avoir fait les bons imports:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    import org.apache.commons.httpclient.HttpClient;
    import org.apache.commons.httpclient.HttpException;
    import org.apache.commons.httpclient.HttpStatus;
    import org.apache.commons.httpclient.methods.PostMethod;
    import org.apache.commons.codec.*;
    import org.apache.commons.codec.binary.*;
    import org.apache.commons.codec.digest.*;
    import org.apache.commons.codec.language.*;
    import org.apache.commons.codec.net.*;
    Merci d'avance pour votre aide!

    Thomas.

  9. #9
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    en plus d'inclure commons httpclient à ton projet, as-tu pensé à inclure ses dépendances?

  10. #10
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2011
    Messages : 40
    Points : 23
    Points
    23
    Par défaut
    A priori, oui car j'arrive bien à faire les imports.

    A moins que cela ne suffise pas à en être une preuve?

    Je vais chercher de ce côté là.

    Merci!

  11. #11
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2011
    Messages : 40
    Points : 23
    Points
    23
    Par défaut
    Bon et bien après avoir retiré mes .jar et les avoir remis (à priori les même?), ça marche!

    Merci pour le conseil!

    @+

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 136
    Points : 66
    Points
    66
    Par défaut
    peut-ton uploader directement un fichier d'un serveur sur un autre avec HttpClient ?

    j'ai un serveur jboss qui genère des fichiers, et un autre serveur de fichier qui tourne avec apache, ce que je voudrais c'est dés que le serveur jboss genère les fichiers il les envois directement sur le serveur apache en upload ...

    j'ai suivi l'exemple j'arrive à a voir une communication entre les deux serveurs mais je n'arrive pas à creer les fichiers sur le serveur apache !!
    est-ce que c'est possible et comment ?

    merci

  13. #13
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    pour ça il faut que t'aie du coté du serveur apache un service qui accepte l'upload.

    Un brin compliqué au premier abord mais bien souple comme technique, je te recommanderais d'activer sur ton serveur apache mod_dav pour activer le protocole de transfert de fichiers webdav.
    Ensuite tu upload avec la librairie sardine, destinée à gérer le coté client du protocole webdav en java. Cette librairie est très facile à prendre en mains


    Maintenant, si les deux serveur tournent sur la même machine, le plus simple reste que jboss écrive directement dans le répertoire de apache

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 136
    Points : 66
    Points
    66
    Par défaut
    moi je dis vive la sardine en mode dav .. ça marche
    cela dis est-ce qu'on peut creer des repertoires sur le serveur apache avec la sardine !! je vais testé

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 136
    Points : 66
    Points
    66
    Par défaut
    oui on peut creer des repertoires ... super merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Bouton qui envoie vers une URL dans une fonction
    Par cecilouchou dans le forum Langage
    Réponses: 6
    Dernier message: 06/05/2013, 11h12
  2. Déplacer une image d'une feuille vers une autre dans un fichier Excel
    Par helenaide dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/10/2011, 14h27
  3. methode java qui ouvre une navigation vers une url
    Par info_systeme dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 15/10/2009, 17h47
  4. Réponses: 1
    Dernier message: 16/06/2009, 18h24
  5. Réponses: 3
    Dernier message: 29/04/2008, 14h14

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