Question

Je suis en train de transférer un fichier de mon application Java sur un serveur FTP le fonctionnement du programme, le fichier est transféré, mais quand je vais ouvrir dans le dossier FTO, le fichier est corrompu, je pense que les paquets sont perdus lors du transfert de fichiers. Pourquoi? Et comment puis-je résoudre ce problème?

Une autre question, comment puis-je arrêter le while si je veux arrêter le téléchargement de fichiers?

Merci tout le monde!

Le code dans ma classe:

FTPClient client = new FTPClient();
InputStream is = null;
//...
try{
 client.connect(MY_FTP_URL);
 client.login(USER, PASS);
 InputStream is = new FileInputStream(file_path);
 OutputStream os = client.storeFileStream(file_name);
 byte[] buffer = new byte[1024];
 int len;
 //I use this way to check the transfer progress
 while((len = is.read(buffer)) != -1){
  os.write(buffer, 0, len);
  os.flush();
 }
 os.close();
} catch (IOException e){
 e.printStackTrace();
} finally{
 try{
  if(is != null){
   is.close();
  }
  client.disconnect();
 } catch(IOException e){
  e.printStackTrace();
 }
}
Était-ce utile?

La solution

Consultez la FAQ :

  

Q: Pourquoi mes fichiers corrompus après   transfert?

     

A: La cause la plus courante est   lorsque le fichier est transféré en ASCII   mais le contenu du fichier ne sont pas   ASCII et le fichier doit être   BINARY transférés. RFC 959 dit   le mode de transfert par défaut devrait être   ASCII. ClientFTP conforme à la   la norme. Vous devez appeler explicitement   setfiletype (FTP.BINARY_FILE_TYPE); à   demander le mode de transfert binaire après   la connexion au serveur FTP.

Appel setFileType(FTP.BINARY_FILE_TYPE);

Autres conseils

FTP a deux modes ASCII (généralement la valeur par défaut) et binaire. Si vous transférez tout autre texte, vous devez définir le client en mode binaire.

Comment régler le mode varie sur la mise en œuvre du client FTP, mais pour IO Commons voir http: //commons.apache .org / net / api / org / apache / communes / net / ftp / FTPClient.html # setfiletype (int )

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top