Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Java y FTP, subir archivos

Estas en el tema de Java y FTP, subir archivos en el foro de Java en Foros del Web. Código: FTPClient ftpClient = new FTPClient(); ftpClient.connect(InetAddress.getByName("staging.Carnicerialazaro1.arnetbiz.com.ar")); ftpClient.login("[email protected]","*****"); //Verificar conexión con el servidor. int reply = ftpClient.getReplyCode(); System.out.println("Respuesta recibida de conexión FTP:" + reply); if(FTPReply.isPositiveCompletion(reply)) ...
  #1 (permalink)  
Antiguo 30/05/2016, 08:37
 
Fecha de Ingreso: mayo-2016
Mensajes: 6
Antigüedad: 2 años, 5 meses
Puntos: 0
Java y FTP, subir archivos

Código:
FTPClient ftpClient = new FTPClient();
            ftpClient.connect(InetAddress.getByName("staging.Carnicerialazaro1.arnetbiz.com.ar"));
            ftpClient.login("[email protected]","*****");
            
            //Verificar conexión con el servidor.
            
            int reply = ftpClient.getReplyCode();
            
            System.out.println("Respuesta recibida de conexión FTP:" + reply);
            
            if(FTPReply.isPositiveCompletion(reply))
            {
                System.out.println("Conectado Satisfactoriamente");    
            }
            else
                {
                    System.out.println("Imposible conectarse al servidor");
                }
           
            //Verificar si se cambia de direcotirio de trabajo
            
            ftpClient.changeWorkingDirectory("/web/staging");//Cambiar directorio de trabajo
            System.out.println("Se cambió satisfactoriamente el directorio");
            //Activar que se envie cualquier tipo de archivo
            
            ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
            BufferedInputStream buffIn = null;
            buffIn = new BufferedInputStream(new FileInputStream("D://Nuevo.txt"));//Ruta del archivo para enviar
            ftpClient.enterLocalPassiveMode();
            ftpClient.storeFile("Nuevo.txt", buffIn);//Ruta completa de alojamiento en el FTP
            ftpClient.completePendingCommand();
            buffIn.close(); //Cerrar envio de arcivos al FTP
            ftpClient.logout(); //Cerrar sesión
            ftpClient.disconnect();//Desconectarse del servidor
        }
        catch(Exception e)
                {
                    System.out.println(e.getMessage());
                    System.out.println("Algo malo sucedió");
                }
Buenos dias a todos, soy nuevo en FTP y mi servidor de internet me provee un dominio con un servidor FTP el cual quiero explotar porque me viene muy bien, mi idea es crear un aplicación en java que suba un archivo automáticamente al servidor lo cual no estoy logrando, logro exitosamente conectarme al servidor pero no el envió de datos. Gracias.
  #2 (permalink)  
Antiguo 30/05/2016, 14:48
 
Fecha de Ingreso: noviembre-2010
Mensajes: 19
Antigüedad: 8 años
Puntos: 1
Respuesta: Java y FTP, subir archivos

Quizas este tutorial te ayude:

http://aquiseprograma.co/2015/10/como-establecer-conexiones-via-sftp-con-java/
  #3 (permalink)  
Antiguo 31/05/2016, 07:50
 
Fecha de Ingreso: mayo-2016
Mensajes: 6
Antigüedad: 2 años, 5 meses
Puntos: 0
Respuesta: Java y FTP, subir archivos

Lamentablemente no me sirvio, porque ademas creo qeu ese es un protocolo mas avanzado. Si me podrian seguir ayudando
  #4 (permalink)  
Antiguo 01/06/2016, 03:53
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.771
Antigüedad: 14 años, 1 mes
Puntos: 454
Respuesta: Java y FTP, subir archivos

Hola:

Si pones qué tipo de error te da, la excepción completa, en qué línea concreta, posiblemente sea más fácil ayudarte. e.getMessage() puede ser escaso, aparte que ni siquiera nos indicas si salta y qué pone. Mejor un e.printStackTrace()

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #5 (permalink)  
Antiguo 01/06/2016, 08:36
 
Fecha de Ingreso: mayo-2016
Mensajes: 6
Antigüedad: 2 años, 5 meses
Puntos: 0
Respuesta: Java y FTP, subir archivos

Si disculpas, la respuesta del servidor es la siguiente:

Respuesta recibida de conexión FTP:230
Conectado Satisfactoriamente
Se cambió satisfactoriamente el directorio
Connection reset
Algo malo sucedió

"Connection reset" seria el error y yo creo que proviene de la linea:
Código:
ftpClient.storeFile("Nuevo.txt", buffIn);//Ruta completa de alojamiento en el FTP
  #6 (permalink)  
Antiguo 01/06/2016, 09:56
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.771
Antigüedad: 14 años, 1 mes
Puntos: 454
Respuesta: Java y FTP, subir archivos

Hola:

Busca un cliente ftp estándar y prueba a subir el fichero con él en vez de con tu programa java, con la idea de ve si es cosa de tu servidor de ftp o de tu programa java. Si con el cliente ftp funciona, es cosa de tu programa java, si con el cliente ftp no funciona, puede ser cosa del servidor ftp o de algún tipo de firewall que tengas en algún sitio.

Aparte, pon e.printStackTrace() en vez de el System.out. Esto te dará la línea exacta del error, mejor que suponer en cual está dando.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #7 (permalink)  
Antiguo 02/06/2016, 11:37
 
Fecha de Ingreso: mayo-2016
Mensajes: 6
Antigüedad: 2 años, 5 meses
Puntos: 0
Respuesta: Java y FTP, subir archivos

Buenas tardes, este es el mensaje de error:

Respuesta recibida de conexión FTP:230
Conectado Satisfactoriamente
Se cambió satisfactoriamente el directorio
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream. java:196)
at java.net.SocketInputStream.read(SocketInputStream. java:122)
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.j ava:283)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.ja va:325)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:1 77)
at java.io.InputStreamReader.read(InputStreamReader.j ava:184)
at java.io.BufferedReader.fill(BufferedReader.java:15 4)
at java.io.BufferedReader.read(BufferedReader.java:17 5)
at org.apache.commons.net.io.CRLFLineReader.readLine( CRLFLineReader.java:58)
at org.apache.commons.net.ftp.FTP.__getReply(FTP.java :313)
at org.apache.commons.net.ftp.FTP.__getReply(FTP.java :292)
at org.apache.commons.net.ftp.FTP.sendCommand(FTP.jav a:503)
at org.apache.commons.net.ftp.FTP.sendCommand(FTP.jav a:628)
at org.apache.commons.net.ftp.FTP.sendCommand(FTP.jav a:602)
at org.apache.commons.net.ftp.FTP.pasv(FTP.java:1025)
at org.apache.commons.net.ftp.FTPClient._openDataConn ection_(FTPClient.java:899)
at org.apache.commons.net.ftp.FTPClient._storeFile(FT PClient.java:657)
at org.apache.commons.net.ftp.FTPClient.__storeFile(F TPClient.java:643)
at org.apache.commons.net.ftp.FTPClient.storeFile(FTP Client.java:2034)
at apachecommons.ApacheCommons.main(ApacheCommons.jav a:48)
Algo malo sucedió

Si probe con filezila y con la MS-DOS de windows y puedo subir los archivos al servidor.
  #8 (permalink)  
Antiguo 02/06/2016, 14:46
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.771
Antigüedad: 14 años, 1 mes
Puntos: 454
Respuesta: Java y FTP, subir archivos

Hola:

¿Has puesto como paquete a tus clases org.apache.commons y a tu clase main la has llamado ApacheCommons?. No pasa nada, pero así es dificil ver en la excepción cual es la línea exacta que provoca el error en tu código, ya que no se ve claro cual es tu código y cual son clases de apache commons ....

Si tu clase se llama FTP.java (lo deduzco porque es la primera clase que sale en la excepción que lleva números de línea), el error estaría en la línea 313, que tampoco podemos ver en el código a cual corresponde. Mira a ver cual es a ver si es la de subir el fichero, o cualquier otra como setFileType(), enterLocalPassiveMode(), completePendingCommand

Saludos.
__________________
Apuntes Java
Wiki de Programación
  #9 (permalink)  
Antiguo 03/06/2016, 11:17
 
Fecha de Ingreso: mayo-2016
Mensajes: 6
Antigüedad: 2 años, 5 meses
Puntos: 0
Respuesta: Java y FTP, subir archivos

Disculpas no me di cuenta que no se pego el codigo completo ahi va de nuevo

Código:
package apachecommons;

import java.io.BufferedInputStream;
import java.io.FileInputStream; 
import java.io.IOException;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
import org.apache.commons.net.ftp.FTP;  
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;

public class ApacheCommons {

    public static void main(String[] args) throws SocketException, UnknownHostException, IOException {
        try
        {
            FTPClient ftpClient = new FTPClient();
            ftpClient.connect("staging.Carnicerialazaro1.arnetbiz.com.ar");
            ftpClient.login("user","password");
            
            //Verificar conexión con el servidor.
            
            int reply = ftpClient.getReplyCode();
            
            System.out.println("Respuesta recibida de conexión FTP:" + reply);
            
            if(FTPReply.isPositiveCompletion(reply))
            {
                System.out.println("Conectado Satisfactoriamente");    
            }
            else
                {
                    System.out.println("Imposible conectarse al servidor");
                }
           
            //Verificar si se cambia de direcotirio de trabajo
            
            ftpClient.changeWorkingDirectory("/web/staging");//Cambiar directorio de trabajo
            System.out.println("Se cambió satisfactoriamente el directorio");
            //Activar que se envie cualquier tipo de archivo
            
            //ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
            ftpClient.setFileType(FTP.ASCII_FILE_TYPE);
            BufferedInputStream buffIn = null;
            buffIn = new BufferedInputStream(new FileInputStream("D://Nuevo.txt"));//Ruta del archivo para enviar
            ftpClient.enterLocalPassiveMode();
            ftpClient.storeFile("Nuevo.txt", buffIn);//Ruta completa de alojamiento en el FTP
            ftpClient.completePendingCommand();
            buffIn.close(); //Cerrar envio de arcivos al FTP
            ftpClient.logout(); //Cerrar sesión
            ftpClient.disconnect();//Desconectarse del servidor
        }
        catch(Exception e)
                {
                    e.printStackTrace();
                    System.out.println("Algo malo sucedió");
                }
    }
    
}
  #10 (permalink)  
Antiguo 03/06/2016, 11:52
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.771
Antigüedad: 14 años, 1 mes
Puntos: 454
Respuesta: Java y FTP, subir archivos

Mira a ver si te vale esto, http://stackoverflow.com/questions/8...nnection-reset dicen que es un problema de java 7 en máquinas windows, es la misma excepción que te sale a tí.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #11 (permalink)  
Antiguo 06/06/2016, 09:12
 
Fecha de Ingreso: mayo-2016
Mensajes: 6
Antigüedad: 2 años, 5 meses
Puntos: 0
Respuesta: Java y FTP, subir archivos

Bendita salvación!!! ese era el error y ahora funciona a la perfección. Te agradezco mucho tu tiempo y dedicación.
  #12 (permalink)  
Antiguo 01/11/2018, 18:01
 
Fecha de Ingreso: julio-2011
Mensajes: 3
Antigüedad: 7 años, 4 meses
Puntos: 0
Respuesta: Java y FTP, subir archivos

Buenas.

Tengo el código para enviar un fichero a mi ftp y funciona correctamente desde ECLIPSE.
El problema se plantea cuando ejecuto la instrucción desde MSDOS para después crear una tarea programada que realice varias tareas y entre ellas, enviar un fichero por ftp.

Código Java:
Ver original
  1. [CODE]
  2.  
  3. import java.io.FileInputStream;
  4. import java.io.IOException;
  5.  
  6. import org.apache.commons.net.ftp.FTP;
  7. import org.apache.commons.net.ftp.FTPClient;
  8.  
  9. public class FtpPedidos {
  10.  
  11.     public static void main(String[] args) {
  12.  
  13.         // Creando nuestro objeto ClienteFTP
  14.         FTPClient client = new FTPClient();
  15.  
  16.         // Datos para conectar al servidor FTP
  17.         String ftp = "mi.servidor.ftp"; // También puede ir la IP
  18.         String user = "mi.usuario";
  19.         String password = "mi.contraseña";
  20.  
  21.         try {
  22.             // Conactando al servidor
  23.             client.connect(ftp);
  24.  
  25.  
  26.             // Logueado un usuario (true = pudo conectarse, false = no pudo
  27.             // conectarse)
  28.             if (client.login(user, password))
  29.             {
  30.                 client.setFileType(FTP.BINARY_FILE_TYPE, FTP.BINARY_FILE_TYPE);
  31.                 client.setFileTransferMode(FTP.BINARY_FILE_TYPE);
  32.                 client.enterLocalPassiveMode();
  33.      
  34.                 String filename = "mi.fichero";
  35.                
  36.                 FileInputStream fis = new FileInputStream(System.getProperty("user.dir")+"//"+filename);
  37.      
  38.                 // Guardando el archivo en el servidor
  39.                if (client.changeWorkingDirectory("mi.carpeta.ftp"))
  40.                     if (client.storeFile(filename, fis))
  41.                         System.out.println("Se ha grabado el fichero");
  42.                     else
  43.                         System.out.println("No se ha grabado el fichero");
  44.      
  45.                 // Cerrando sesión
  46.                 client.logout();
  47.      
  48.                 // Desconectandose con el servidor
  49.                 client.disconnect();
  50.             }  
  51.         } catch (IOException ioe) {
  52.             System.out.println(ioe.getMessage());
  53.         }
  54.    }
  55.  
  56. }
  57.  
  58. [/CODE]


Hasta aquí todo funciona perfectamente desde ECLIPSE.

Si ejecuto desde MSDOS como:

c:\java FtpPedidos

Obtengo la siguiente respuesta:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/net/ftp/FTPClient at FtpPedidos.main(FtpPedidos.java:12)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.net.ftp.FTPClient
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 1 more

Cual puede ser el problema?
Gracias

Última edición por LOBOLIGERO; 01/11/2018 a las 18:08
  #13 (permalink)  
Antiguo 06/11/2018, 06:38
 
Fecha de Ingreso: febrero-2011
Mensajes: 671
Antigüedad: 7 años, 8 meses
Puntos: 78
Respuesta: Java y FTP, subir archivos

Hola,
para ejecutarlo, te recomiendo empaquetar tu programa en un ejecutable .jar. (con las librerías Apache Commons, que es de lo que se te está quejando)

Para ejecutarlo de la siguiente manera: C:\java -jar FtpPedidos.jar

Has revivido un hilo que tiene 2 años y medio. Si creas uno propio se te podrá ayudar mejor.

Saludos



La zona horaria es GMT -6. Ahora son las 13:14.