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

avec Java Discussion :

pb de connexion à un serveur ftp


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 140
    Par défaut pb de connexion à un serveur ftp
    Bonjour, j'ai un problème avec mon code pour me connecter au serveur ftp, voici l'erreur:
    java.net.MalformedURLException: unknown protocol: ftp://127.0.0.1/

    Je fais ceci dans un bouton donc une JForm:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    File fichier = new File("C://25.jpg");
     UrlHelper.downloadFile("ftp://127.0.0.1/", fichier, "GARDIEN");
    et voici mon 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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
     
    package test;
     
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.net.URL;
    import java.net.URLConnection;
    import sun.net.ftp.FtpClient;
     
    public class UrlHelper {
     
        public static void downloadFile(String adresse) {
     
            downloadFile(adresse, null, null);
        }
     
        public static void downloadFile(String adresse, File dest, String username) {
            BufferedReader reader = null;
            FileOutputStream fos = null;
            InputStream in = null;
            try {
     
                // création de la connection
                String file = "25.jpg";
                URL url = new URL(adresse, username, file);
                URLConnection conn = url.openConnection();
     
     
                System.out.println(adresse);
     
                String FileType = conn.getContentType();
                System.out.println("FileType : " + FileType);
     
                int FileLenght = conn.getContentLength();
                if (FileLenght == -1) {
                    throw new IOException("Fichier non valide.");
                }
     
                // lecture de la réponse
                in = conn.getInputStream();
                reader = new BufferedReader(new InputStreamReader(in));
                if (dest == null) {
                    String FileName = url.getFile();                           
                    FileName = FileName.substring(FileName.lastIndexOf('/') + 1);
                    dest = new File(FileName);
                }
                fos = new FileOutputStream(dest);
                byte[] buff = new byte[1024];
                int l = in.read(buff);
                while (l > 0) {
                    fos.write(buff, 0, l);
                    l = in.read(buff);
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    fos.flush();
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                try {
                    reader.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }

    Merci d'avance.

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    "openConnection" de java.net.URL ne gère pas le protocole FTP.
    Tu dois passer par une autre API, ou encore coder la récupération à la main.
    Voici de quoi t'amuser : RFC FTP.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre Expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Par défaut
    Apache commons net contient tout ce qu'il faut pour faire du FTP client (entre autre).

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 140
    Par défaut
    j'ai fait un nouveau programme mais je ne sais pas si la gestion des flux, etc. est correct.

    Pouvez-vous m'aider?

    Merci encore.

    mon fichier JForm:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    try {
     
                receiveFileByFTP ftp = new receiveFileByFTP();
                ftp.receiveFileByFTP();
            } catch (IOException ex) {
                Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
            }

    Mon 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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
     
    package test;
    import java.io.*;
    import sun.net.ftp.FtpClient;
    import sun.net.*;
    /**
     *
     * @author Client
     */
    public class receiveFileByFTP {
     
    public static void receiveFileByFTP() throws IOException
        {
     
        String username = "DRH";
        String password = "admin";
        String host = "10.104.100.81";
        String filename = "25.jpg";
     
        FtpClient ftp = new FtpClient();
        byte[] client;
            ftp.openServer(host, 21);
            ftp.login(username, password);
    	ftp.binary();    
     
     InputStream os = ftp.get(filename); 
     OutputStream fis = new FileOutputStream("C:\\Documents and Settings\\adminlocal\\Mes documents\\Photos_téléchargees_ftp");
     
     
            byte buf[] = new byte[8192];
            int bytesRead = os.read(buf);
            while (bytesRead != -1) {
                fis.write(buf, 0, bytesRead);
                bytesRead = os.read(buf);
            }
     
            fis.close();
            os.close();
    }}

  5. #5
    Membre Expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Par défaut
    Plus simple pour télécharger le fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    		// Récupération du fichier
    		ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
    		String nomFichierCible = "C:/Bla/Toto.txt";
    		RandomAccessFile outtxtfile = new RandomAccessFile(nomFichierCible, "rw");
    		try {
    			FileOutputStream fileStream = new FileOutputStream(outtxtfile.getFD());
    			if (ftp.retrieveFile("Toto.txt", fileStream)) {
    				System.out.println("Toto.txt téléchargé avec succès");
    			}
    		} finally {
    			outtxtfile.close();
    		}
    Veille à fermer tes flux dans un bloc "finally".

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 140
    Par défaut
    quand je passe par FtpClient, les fonctions retrieveFile() et setFileType() ne sont pas reconnu comment se fait-il ?
    Merci encore.

    j'ai fait ceci exactement:
    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
    45
    46
    47
    48
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
     
    package test;
     
    import java.io.FileOutputStream;
    import java.io.RandomAccessFile;
    import sun.net.ftp.FtpClient;
     
    /**
     *
     * @author Jérémy Greslon
     */
    public class DownloadFile {
     
        public static void DownloadFile(){
     
        String username = "DRH";
        String password = "admin";
        String host = "127.0.0.1";
     
     
        FtpClient ftp = new FtpClient();
     
     
        //byte[] client;
            ftp.openServer(host, 21);
            ftp.login(username, password);
    	ftp.binary(); 
     
     
     
                    // Récupération du fichier
    		//ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
    		String nomFichierCible = "C:/Bla/Toto.txt";
    		RandomAccessFile outtxtfile = new RandomAccessFile(nomFichierCible, "rw");
    		try {
    			FileOutputStream fileStream = new FileOutputStream(outtxtfile.getFD());
    			if (ftp.retrieveFile("Toto.txt", fileStream)) {
    				System.out.println("Toto.txt téléchargé avec succès");         
    			}
    		} finally {
    			outtxtfile.close();
    		}
        }
    }

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

Discussions similaires

  1. [EdtFTPj] Connexion à un serveur FTP
    Par ensinienne dans le forum API standards et tierces
    Réponses: 9
    Dernier message: 01/03/2013, 15h43
  2. [QtNetwork] Connexion à un serveur FTP
    Par Jiyuu dans le forum PyQt
    Réponses: 1
    Dernier message: 31/08/2011, 02h00
  3. [Débutant] Connexion au serveur FTP
    Par maestroENSI dans le forum C#
    Réponses: 3
    Dernier message: 29/07/2011, 19h24
  4. connexion à mon serveur ftp impossible ?
    Par petitclem dans le forum Distributions
    Réponses: 0
    Dernier message: 28/05/2008, 11h39
  5. [eSVN+Fedora] Connexion à un serveur ftp distant
    Par lun4t1k dans le forum RedHat / CentOS / Fedora
    Réponses: 0
    Dernier message: 18/10/2007, 00h12

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