[Résolu] Envoi FTP de fichier Excel avec org.apache.commons.net.ftp

Envoi FTP de fichier Excel avec org.apache.commons.net.ftp [Résolu] - Java - Programmation

Marsh Posté le 22-07-2008 à 12:14:59    

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 :
  1. int reply;
  2.   ftp = new FTPClient();
  3.   ftp.connect(ftpServer);
  4.   // After connection attempt, you should check the reply code to verify
  5.   // success.
  6.   reply = ftp.getReplyCode();
  7.   if (!FTPReply.isPositiveCompletion(reply)) {
  8.    ftp.disconnect();
  9.    return;
  10.   }
  11.               boolean logged = ftp.login(ftpLogin, ftpPassword);
  12.   int binary = ftp.type( FTP.BINARY_FILE_TYPE );
  13.   ftp.enterLocalPassiveMode();
  14.   // transfer files
  15.   File file = new File( ftpFileName );
  16.   FileInputStream fis = new FileInputStream( file );
  17.   String fileName = file.getName();
  18.   boolean stored = ftp.storeFile( fileName, fis );
  19.   ftp.logout();


 
Merci par avance


Message édité par TomZ le 22-07-2008 à 16:20:11
Reply

Marsh Posté le 22-07-2008 à 12:14:59   

Reply

Marsh Posté le 22-07-2008 à 15:34:24    

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.

Reply

Marsh Posté le 22-07-2008 à 16:21:53    

Il faut en fait ajouter dans le code
 

Code :
  1. ftp.setFileType(FTP.BINARY_FILE_TYPE);
  2. //à faire avant  
  3. 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.


Message édité par TomZ le 22-07-2008 à 16:23:41
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed