Envoyer des fichiers sur un FTP depuis un programme Java...

Envoyer des fichiers sur un FTP depuis un programme Java... - Java - Programmation

Marsh Posté le 30-11-2005 à 01:22:23    

Bonjour,
 
Voila j'essaye d'envoyer des fichiers sur un seveur FTP depuis un programme Java...
Pour se faire, j'utilise une classe que j'ai trouvée sur le net à l'adresse suivante :
http://java.developpez.com/faq/jav [...] ction.java
 
J'ai testé cette classe dans un programme hier soir et le fichier a été uploadé avec succès...
Maintenant plus moyen j'ai toujours cette erreur :
 

Code :
  1. 220 Serveur de mise a jour des pages perso de Free.fr version [Feb  7 2005 13:55:51]
  2. 331 Password required for xxxx.
  3. 230 User xxxxlogged in.
  4. 501 PORT address does not match originator.
  5. 221 Goodbye.


 
Voici mon programme Java :
 

Code :
  1. import java.io.IOException;
  2. import java.net.UnknownHostException;
  3. public class Test {
  4. public static void main(String[] args) {
  5.  FTPConnection connection=new FTPConnection();
  6.  String host="ftpperso.free.fr";
  7.  String username="xxxx";
  8.  String password="xxxx";
  9.  try {
  10.   if (connection.connect(host)) {
  11.    if (connection.login(username, password)) {
  12.     System.out.println(connection.uploadFile("noir_dez_18.jpg" ));
  13.    }
  14.    connection.disconnect();
  15.   }
  16.  } catch (UnknownHostException e) {
  17.   // TODO Auto-generated catch block
  18.   e.printStackTrace();
  19.  } catch (IOException e) {
  20.   // TODO Auto-generated catch block
  21.   e.printStackTrace();
  22.  }
  23. }
  24. }


 
J'ai essayé de désactiver mon pare feu mais ca ne change rien...
 
Merci d'avance pour votre aide...


Message édité par ralkif le 30-11-2005 à 01:24:24
Reply

Marsh Posté le 30-11-2005 à 01:22:23   

Reply

Marsh Posté le 30-11-2005 à 01:27:22    

passe en mode passif; ptain mais c'est quoi le rapport avec la prog? [:ideenoire] z'ont plus de forum à developpez.com ?


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 30-11-2005 à 01:45:48    

the real moins moins a écrit :

passe en mode passif; ptain mais c'est quoi le rapport avec la prog? [:ideenoire] z'ont plus de forum à developpez.com ?


 
bon alors j'ai modifié :
outputStream.println("port " + addrshorts[0] + "," + addrshorts[1] +
                             "," + addrshorts[2] + "," + addrshorts[3] + "," +
                             ((localport & 0xff00) >> 8) + "," +
                             (localport & 0x00ff));
 
par :  
outputStream.println("pasv " + addrshorts[0] + "," + addrshorts[1] +
                             "," + addrshorts[2] + "," + addrshorts[3] + "," +
                             ((localport & 0xff00) >> 8) + "," +
                             (localport & 0x00ff));
 
c'est bien ca ?
Voila ce que j'obtiens :
 

Code :
  1. 220 Serveur de mise a jour des pages perso de Free.fr version [Feb  7 2005 13:55:51]
  2. 331 Password required for xxxx.
  3. 230 User xxxx logged in.
  4. 227 Entering Passive Mode (212,27,63,3,53,238).
  5. 200 Type set to I
  6. 150 Opening BINARY mode data connection for noir_dez_18.jpg


 
Le problème maitenant c'est qu'il bloque à ce moment la et ne fait plus rien...
 

Code :
  1. public boolean executeDataCommand(String command, InputStream in)
  2.         throws IOException
  3.     {
  4.         // Open a data socket on this computer
  5.         ServerSocket serverSocket = new ServerSocket(0);
  6.         if (!setupDataPort(command, serverSocket)) return false;
  7.         Socket clientSocket = serverSocket.accept();           <------------------- C'est ici que ca bloque...
  8.         System.out.println("aa" );
  9.         // Transfer the data
  10.         OutputStream out = clientSocket.getOutputStream();
  11.         transferData(in, out);
  12.         // Clean up the data structures
  13.         out.close();
  14.         clientSocket.close();
  15.         serverSocket.close();
  16.         return isPositiveCompleteResponse(getServerReply());   
  17.     }


 
merci pr ton aide ;)

Reply

Marsh Posté le 30-11-2005 à 08:32:19    

up!
help please ! je comprends pas pourquoi il ne veut pas continuer...
merci !

Reply

Marsh Posté le 30-11-2005 à 12:13:24    

euh, pq tu vas bidouiller ta librairie ftp? :heink: c'est laquelle, déjà ? y'a pas une méthode pour passer en passive?  
j'suis pas expert en ftp, mais jpense pas que tu doives virer le PORT !?
bref, si c'est une question de réseaux et protocoles, spa le bon forum :o


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 30-11-2005 à 15:04:43    

the real moins moins a écrit :

euh, pq tu vas bidouiller ta librairie ftp? :heink: c'est laquelle, déjà ? y'a pas une méthode pour passer en passive?  
j'suis pas expert en ftp, mais jpense pas que tu doives virer le PORT !?
bref, si c'est une question de réseaux et protocoles, spa le bon forum :o


 
ben en fait la librairie que j'ai (cf le lien ds mon premier message) n'utilise pas le mode passif du moins il me semble...
 
En fait quand j'utilise filezilla pr envoyer mes photos sur le ftp, j'ai bien la meme série d'instrcution ftp quand je lance mon programme java...c'est juste qu'il ne fait rien au moment de l'acceptation de la socket...
 
Sinon si quelqu'un connait une autre librairie ftp dont je pourrais me servir :)
 
encore merci pr ton aide !
 
ps : je vais mettre le lien vers ce sujet ds le forum réseaux...

Reply

Marsh Posté le 30-11-2005 à 16:30:10    

Reply

Marsh Posté le 30-11-2005 à 17:18:43    

merci ! ca a lair pas mal effectivement...je vais regarder ca de plus près ;)

Reply

Marsh Posté le 30-11-2005 à 21:42:35    


 
alors je me suis servi de la classe FTPClient de http://jakarta.apache.org/commons/net/
 
voici ce que je test :
 

Code :
  1. FTPClient f=new FTPClient();
  2.  try {
  3.   f.connect("ftpperso.free.fr" );
  4.   f.login("xxx","xxx" );
  5.   f.setFileTransferMode(FTPClient.BINARY_FILE_TYPE);
  6.   f.enterRemotePassiveMode();
  7.   System.out.println(f.remoteStore("noir_dez_18.jpg" ));
  8.   f.disconnect();
  9.  }


 
Il crée bien le fichier sur le serveur mais celui fait 0 octet...une idée ?
 
merci !

Reply

Marsh Posté le 30-11-2005 à 22:26:31    

parfait, c'est tout a fait normal [:dawa]

Reply

Marsh Posté le 30-11-2005 à 22:26:31   

Reply

Marsh Posté le 01-12-2005 à 00:55:13    

souk a écrit :

parfait, c'est tout a fait normal [:dawa]


 
Pourquoi dis-tu que c'est tout a fait normal ?

Reply

Marsh Posté le 01-12-2005 à 02:08:43    

j'ai essayé ceci :
 
 
   f.connect("ftpperso.free.fr" );
   f.login("xxxx","xxxx" );
   f.enterRemotePassiveMode();
   f.setFileTransferMode(FTPClient.STREAM_TRANSFER_MODE);
   f.setFileType(FTPClient.BINARY_FILE_TYPE);
   
   FileInputStream fis=new FileInputStream(new File("noir_dez_18.jpg" ));
   System.out.println(f.storeFile("noir_dez_18.jpg",fis));
   System.out.println(f.getReplyString());
   f.disconnect();
 
Il m'affiche ceci :
 
false
200 Type set to I
 
 
Que puis-je faire ?

Reply

Marsh Posté le 01-12-2005 à 13:06:48    

up please !!!

Reply

Marsh Posté le 01-12-2005 à 13:25:15    

question tres conne hein, mais vu que le serveur FTP te dit que tout est ok et que le FTPClient te dit qu'il a rien pu faire, est-ce que ton fichier noir_dez_18.jpg tu est sur qu'il existe a l'endroit ou tu le prends ??
 
genre  

Code :
  1. File image = new File("noir_dez_18.jpg" );
  2. System.out.println(image.exists());


 
ca t'affiche quoi ? [:dawa]

Reply

Marsh Posté le 01-12-2005 à 13:30:08    

Suis pas chez moi la...
Je regarde ca tou de suite en rentrant mais à priori je pense qu'elle est au bon endroit (dans le répertoire ou se trouve le .class)...

Reply

Marsh Posté le 01-12-2005 à 19:22:50    

Je viens de tester :

Code :
  1. File file=new File("noir_dez_18.jpg" );
  2.   System.out.println("File->"+file.exists());


 
Résultat :  

Code :
  1. File->true


 
Donc le fichier existe bien...Mais c'était une bonne idée ;)
Je vois vraiment pas pourquoi il ne fait pas le transfert...
 
Help !!!!

Reply

Marsh Posté le 01-12-2005 à 23:11:01    

c'est bon j'ai trouvé :-)

Code :
  1. FTPClient client=new FTPClient();
  2.  String host="ftpperso.free.fr";
  3.  String username="xxx";
  4.  String password="xxx";
  5.  try {
  6.   client.connect(host);
  7.   client.login(username,password);
  8.   client.setFileType(FTPClient.BINARY_FILE_TYPE);
  9.   File f=new File(rep);
  10.   FileInputStream in= new FileInputStream("noir_dez_18.jpg" );
  11.   client.storeFile("noir_dez_18.jpg",in);
  12.  }


Merci a tous !


Message édité par ralkif le 01-12-2005 à 23:14:31
Reply

Marsh Posté le 21-12-2005 à 10:36:04    

Désolé de poser une question aussi "neu-neu" mais :  
 
pour télécharger une librairie (http://jakarta.apache.org/site/downloads/downloads_commons-net.cgi)
il faut prendre quel(s) fichier(s)?
 
et après, où faut-il les mettre?? (j'utilise JBuilder Foundation 2005)
 
merci à vous. :s

Reply

Marsh Posté le 21-12-2005 à 12:54:15    

> topics "debutant" et "classpath"


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 21-12-2005 à 13:34:14    

koolway a écrit :

Désolé de poser une question aussi "neu-neu" mais :  
 
pour télécharger une librairie (http://jakarta.apache.org/site/downloads/downloads_commons-net.cgi)
il faut prendre quel(s) fichier(s)?
 
et après, où faut-il les mettre?? (j'utilise JBuilder Foundation 2005)
 
merci à vous. :s


 
tu prends le .jar et tu le mets dans ton classpath (ou tu rajoutes le .jar dans ton classpath)


---------------
Voir les RAW sous Android: https://market.android.com/details? [...] .RawVision Blog Photo: http://photouch.me Applications mobiles: http://caketuzz.com Wapcam Project: http://wapcam.mobi
Reply

Marsh Posté le 21-12-2005 à 14:32:03    

Merci pour vos réponses..  
 
j'ai essayé par Outils-->Configurer-->Bibliothèques.
 
la j'ai créé un nouveau dossier dans Jbuilder.
dans ce dossier, j'ai ajouter dans la classe le .jar (commons-net-1.4.1.jar)
Ne sachant pas ce qu'il faut mettre dans la source, j'ai fait pareil.
 
Mais ca ne marche pas.  :??:  
 
Il faut mettre quoi dans classe et source?  
 
merci


Message édité par koolway le 21-12-2005 à 14:32:28
Reply

Marsh Posté le 21-12-2005 à 14:35:49    

the real moins moins a écrit :

> topics "debutant" et "classpath"


 [:pingouino]  
il vaut mieux commencer par lire ces deux topics et comprendre ce qu'est le classpath

Reply

Marsh Posté le 21-12-2005 à 14:50:40    

je sais ce qu'est un classpath.
je sais les mettre ds la ligne de compilation du prog.
 
moi c'est juste pour savoir que mettre dans jbuilder?!?  
pour pouvoir profiter des petits menus auto lors de la frappe.
 
j'ai beau ajouter le .jar dans la classe et dans la source. que dalle.

Message cité 1 fois
Message édité par koolway le 21-12-2005 à 14:53:43
Reply

Marsh Posté le 21-12-2005 à 14:56:00    

koolway a écrit :

je sais ce qu'est un classpath.


 

koolway a écrit :

j'ai beau ajouter le .jar dans la classe et dans la source. que dalle.


'k, lol [:pingouino]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 21-12-2005 à 15:00:45    

c'est Jbuilder que je capte pas...
suffit juste de me dire :  
dans l'onglet classe tu mets : XXX
dans l'onglet source tu mets : YYY..


Message édité par koolway le 21-12-2005 à 15:02:41
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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