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 :

Téléchargement fichier impossible


Sujet :

Entrée/Sortie Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Téléchargement fichier impossible
    Bonjour,
    je cherche à télécharger(download) un fichier sur le serveur FTP seulement j'ai un problème de chemin.
    J'ai vérifier le chemin plusieurs fois,le chemin est bon mais l'erreur est "Le chemin d’accès spécifié est introuvable"
    Voici le 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
    public static void downloadFileFromFtp(String filename,String path){
            FTPClient client = new FTPClient();
            OutputStream fos = null;
            try{
                client.connect(HOSTNAME, PORT_FTP);
                if(client.login(USERNAME, PASSWORD)){
                    int replycode = client.getReplyCode();
     
                    if(!FTPReply.isPositiveCompletion(replycode)){
                        System.out.println("Server Down");
                    }
                    client.setFileType(FTP.BINARY_FILE_TYPE);
                    fos =  (OutputStream) new FileOutputStream(new File(filename).getPath());
     
                    client.retrieveFile(path, fos);
                    System.out.println("Fichier téléchargé.");
                }else{
                    System.out.println("Connexion impossible au Serveur");
                }
     
            }catch(IOException ioe){
                ioe.printStackTrace();
            }finally{
                try{
                    if( fos != null){
                        fos.close();
                    }
                }catch(IOException ioe){
                    ioe.printStackTrace();
                }
            }
        }
    Mon serveur FTP est vsftpd sous unix CentOS.

    L'erreur c'est au niveau de cette appel : fos = new FileOutputStream(filename);
    Je passe le chemin que voici : /root/users/depots/Contents.zip
    Mais quand je passe le nom du fichier tout simplement il execute la fonction mais dans mon répertoire local il y a pas de fichier télécharger.

    Merci pour votre aide!
    Chris

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 250
    Points : 403
    Points
    403
    Par défaut
    A vue de nez je dirais un problème de droits unix sur l'arborescence /root/users/depots.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par NoClassDefFound Voir le message
    A vue de nez je dirais un problème de droits unix sur l'arborescence /root/users/depots.
    Sinon avec les fonctions upload et delete toujours dans le même répertoire ça marche bien, c'est juste dans le cas ou je cherche à downloader que l'exception est lancée : "Le chemin d’accès spécifié est introuvable"
    Soit dit en passant, je me connecte entant qu'administrateur (prompt #) donc j'ai tout les droits.

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 250
    Points : 403
    Points
    403
    Par défaut
    Peux-tu mettre la stacktrace complète ?

    J'ai regardé la javadoc de la classe FTPClient et il ne parle que du nom de fichier a récupérer, pas d'un chemin complet.
    Q'est-ce qui se passe si tu change de répertoire et que tu ne passe que le nom de fichier dans la méthode ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public boolean retrieveFile(String remote,OutputStream local)                  throws IOException
     
    Parameters:
        remote - The name of the remote file.
        local - The local OutputStream to which to write the file.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Dans ce cas, la fonction s’exécute bel et bien mais le hic est que le fichier créé est vide voir qu'on ne peut pas l’ouvrir et aussi il ne le crée par dans le bon répertoire, il est crée dans le répertoire du projet java.

  6. #6
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 711
    Points : 4 792
    Points
    4 792
    Par défaut
    Comme le dit NoClassDefFound, le fos désigne un futur fichier local. Essayes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fos =  (OutputStream) new FileOutputStream("C:/toto.txt");
    et puis il faut certainement fermer le fos après genre :

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Cela fonctionne est crée le fichier dans le bon répertoire, mais le contenu est vide et corrompu.
    Normalement, le fos devriez contenir le fichier source à télécharger dans le FTP, si nous mettons le fichier destination dans le fos nous créons un fichier vide.
    Je pense plutôt que le problème vient du coté de la fos qui n'est pas dans le session et ne pourra pas reconnaitre le path.
    je ne sais pas si vous me comprenais.

  8. #8
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 250
    Points : 403
    Points
    403
    Par défaut
    Curieux, c'est comme si rien n'était lu dans le fichier filename.
    Peux-tu essayer quelque chose comme ci-dessous:
    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
    BufferedInputStream bis = null;
    FileOutputStream fos = null;
    byte[] bRead = new byte[128];
    int totalBytes = 0;
    try {
      fos = new FileOutputStream(new File("toto.zip"));
      bis =  new BufferedInputStream(client.retrieveFileStream(filename));
      while (bis.read(bRead)>0){
         fos.write(bRead);     
         totalByes+=128;
       }
    }finally {
      fos.flush();
      fos.close();
      bis.close();
    }

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Solution
    Bonjour,
    Enfin j'ai trouvé la solution:

    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
     
    public static void downloadFileFromFtp(String filename,String path) throws IOException{
    		FTPClient client = new FTPClient();
    		OutputStream fos = null;
     
    		try{
    			client.connect(HOSTNAME, PORT_FTP);
    			if(client.login(USERNAME, PASSWORD)){
    				int replycode = client.getReplyCode();
    //Changer l'espace de travail qui doit pointer là ou se trouve les fichier à télécharger
    				client.changeWorkingDirectory("/root/users/depots/");
    				if(!FTPReply.isPositiveCompletion(replycode)){
    					System.out.println("Server Down");
    				}
    				client.setFileTransferMode(FTPClient.BLOCK_TRANSFER_MODE);
    				client.setFileType(FTP.BINARY_FILE_TYPE);
    // En parametre, le dossier de destination et le nom du fichier le tout concatener
    				fos =  (OutputStream) new FileOutputStream("D:/tmp/"+new File(filename).getName());
    				fos.flush();
    //Juste le nom du fichier et le fos.
    				client.retrieveFile(new File(filename).getName(), fos);
    				System.out.println("Fichier téléchargé.");
     
    			}else{
    				System.out.println("Connexion impossible au Serveur");
    			}
     
    		}catch(IOException ioe){
    			ioe.printStackTrace();
    		}finally{
    			try{
    				if( fos != null){
    					fos.close();
    				}
    			}catch(IOException ioe){
    				ioe.printStackTrace();
    			}
    		}
    	}

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

Discussions similaires

  1. [MySQL] Téléchargement de fichiers impossible
    Par ludojojo dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 23/03/2010, 17h15
  2. Réponses: 6
    Dernier message: 15/12/2006, 16h03
  3. Copie de fichier impossible en Java ?
    Par Fildz dans le forum Entrée/Sortie
    Réponses: 8
    Dernier message: 21/09/2005, 13h23
  4. suppression de fichier impossible (windows xp)
    Par annecyrond dans le forum Windows XP
    Réponses: 8
    Dernier message: 10/03/2005, 11h38
  5. [Windows 2000 server] Téléchargement FTP impossible sous IE6
    Par o151181 dans le forum Windows Serveur
    Réponses: 6
    Dernier message: 24/11/2004, 18h00

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