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 FTP de fichier Excel avec org.apache.commons.net.ftp


Sujet :

Entrée/Sortie Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 38
    Points : 24
    Points
    24
    Par défaut Envoi FTP de fichier Excel avec org.apache.commons.net.ftp
    Bonjour à tous,

    Je rencontre à l'heure actuelle une difficulté pour envoyer un fichier Excel via FTP.

    J'ai lu que les fichiers Excel devraient être transférés en mode BINARY. J'ai donc mis en place le type de transfert en BINARY. L'envoi se fait, le fichier généré sur mon poste est tout à fait lisible. Par contre, quand je télécharge ce fichier à partir du FTP (via FileZilla), il est illisible par Excel.

    En changeant le mode de transfert en ASCII, le fichier s'envoie aussi et quand je le télécharge je peux l'ouvrir. Ca fonctionne donc mais pas de la manière dont il serait "conseillé" d'envoyer.

    Ci-dessous la méthode d'envoi FTP.

    Il se peut également que mes lectures soient "mauvaises" auquel cas, je laisserai le transfert en ASCII.

    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
     
    	public static void put( String ftpServer, String ftpLogin, String ftpPassword, String ftpFileName ) {
     
    	    boolean error = false;
    	    FTPClient ftp = null;
     
    	    try {
     
    			int reply;
     
    			ftp = new FTPClient();
     
    			ftp.connect(ftpServer);
    			log.debug("FtpUtils => Connected to " + ftpServer + ".");
    			log.debug("FtpUtils =>   Reply string is : " + ftp.getReplyString());
     
    			// After connection attempt, you should check the reply code to verify
    			// success.
    			reply = ftp.getReplyCode();
     
    			if (!FTPReply.isPositiveCompletion(reply)) {
     
    				ftp.disconnect();
    				log.error("FtpUtils => FTP server refused connection.");
    				return;
    			}
     
    		    boolean logged = ftp.login(ftpLogin, ftpPassword);
    			log.debug("FtpUtils => " + ( logged ? "L" : "NOT l" ) + "ogged in.");
    			log.debug("FtpUtils =>   Reply string is : " + ftp.getReplyString());
     
    			int binary = ftp.type( FTP.BINARY_FILE_TYPE );
    			log.debug("FtpUtils => Setting file type to binary, reply is " + binary);
     
    			ftp.enterLocalPassiveMode();
     
    			// transfer files
    			File file = new File( ftpFileName );
    			FileInputStream fis = new FileInputStream( file );
    			String fileName = file.getName();
    			boolean stored = ftp.storeFile( fileName, fis );
    			log.debug("FtpUtils => File " + ftpFileName + ( stored ? " " : "NOT " ) + "stored.");
    			log.debug("FtpUtils =>   Reply string is : " + ftp.getReplyString());
     
    			ftp.logout();		
    		} 
    	    catch (IOException e) {
     
    			error = true;
    			log.error("FtpUtils => Erroc : " + e.getMessage());
    		} 
    	    finally {
     
    			if (ftp.isConnected()) {
    				try {
    					ftp.disconnect();
    				}
    				catch (IOException ioe) {
    					log.error("FtpUtils => Erroc : " + ioe.getMessage());
    				}
    			}
    		}
    	}
    Merci d'avance

    EDIT: il apparaît que pour des fichiers de gros volumes, même l'envoi ASCII ne permet pas de récupérer les fichiers Excels non endommagés.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 38
    Points : 24
    Points
    24
    Par défaut
    Il faut en fait ajouter dans le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ftp.setFileType(FTP.BINARY_FILE_TYPE);
     
    //à faire avant  
    int binary = ftp.type( FTP.BINARY_FILE_TYPE );
    car en lisant bien la documentation de la librairie, on y trouve "The default file type is FTP.ASCII_FILE_TYPE" du coup les en-tête des fichiers devaient être mal écrites.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 14/02/2012, 11h57
  2. Progress Bar avec org.apache.commons.net.ftp
    Par HunTR dans le forum Entrée/Sortie
    Réponses: 12
    Dernier message: 05/03/2010, 14h18
  3. org.apache.commons.net.ftp.FTPClient méthode changeWorkingDirectory et les accents
    Par qdaemon_fr dans le forum API standards et tierces
    Réponses: 0
    Dernier message: 08/02/2010, 16h59
  4. [FTP API org.apache.commons.net.ftp] Commande 'Quote'
    Par JnJp28 dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 30/11/2007, 12h23
  5. Réponses: 3
    Dernier message: 08/05/2006, 23h31

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