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:
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.