lunes, 28 de noviembre de 2011

Descargar y Subir y Ejecutar comandos FTP en java


Hoy veremos como conectarnos a un servidor FTP y poder descargar y subir ficherostambiéntener la oportunidad de ejecutar comandos FTP, pero para hacer todo eso necesitamos que nuestro proyecto tenga lalibreríaJvFTP desarrollada porBea Petrovicova, que estaincluidaen el proyecto, antes de utilizar todas la propiedades debemos de tener una cuenta en un servidor FTP pueden registrarse en 260MBque es un hosting casi completo y brinda muchos servicios gratuitos.
¿Como funciona el proyecto?
despuésse haberseregistrado a su correo llegara unainformaciónmuy importante no la borren por que se encuentran todas las claves de acceso que les da 260MB, como servidor,usuario,y contraseña el cual necesitamos para poder conectarnos, hay una casilla en laaplicacióndonde dice que coloquen la ruta remota deben de colocar la ruta del servidor donde se alojan los archivos ejem: /mipagina/index.html/ digamos que quiero descargar ese archivo solo pongo esa ruta me voy a la casilla descargar escribo el directorio local osea de la pc mas el nombre del archivo y la extencion , casi lo mismo si quiero subir un archivo.
fragmento del codigo subir y descargar

public static boolean uploadFileByFTP(String server, String user, String pass, String localPath, String remotePath) {
try {
URL url = new URL("ftp://"+user+":"+pass+"@"+server + remotePath+";type=i");
URLConnection urlc = url.openConnection();
OutputStream os = urlc.getOutputStream();
BufferedReader br = new BufferedReader(new FileReader(localPath));
int c;
while ((c = br.read()) != -1) {
os.write(c);
}
os.flush();
os.close();
br.close();
principal.imagen_progre.setIcon(null);
return true;
} catch (Exception ex) {
ex.printStackTrace();
return false;
}
}

public static boolean downloadFileByFTP(String server, String user, String pass, String localPath, String remotePath) {
try {
URL url = new URL("ftp://" + user + ":" + pass + "@" + server + remotePath + ";type=i");
URLConnection urlc = url.openConnection();
InputStream is = urlc.getInputStream();
BufferedWriter bw = new BufferedWriter(new FileWriter(localPath));
int c;
while ((c = is.read()) != -1) {
bw.write(c);
}
is.close();
bw.flush();
bw.close();
principal.imagen_progre.setIcon(null);
return true;
} catch (Exception ex) {
ex.printStackTrace();
System.out.println(ex.getMessage());
return false;
}
}


Si lo imaginas,lo programas





18 comentarios:

  1. para hacer funcionar este programa tengo que descargar algún tipo de programa?i alguna libreria

    ResponderEliminar
  2. ok, lo tengo claro, ahora el problema es que cuando lo descarga el fichero está dañado

    ResponderEliminar
  3. por cierto, esto para que lo pones: principal.imagen_progre.setIcon(null);
    este programa funcionaria con .rar

    ResponderEliminar
  4. Hola que tal las librerías ya están incluidas en el proyecto,la instrucción principal.imagen_progre.setIcon(null); es una etiqueta de tipo JLabel el cual le agrego el valor de null para que no me presente ningún icono osea no me presenta nada,y si hay archivos q al descargar se presentan como dañado espero pronto buscar la solución de esto en una segunda entrega de este proyecto

    ResponderEliminar
  5. Funciona para cualquier tipo de archivo? Por cierto, para el programa estoy usando el compilador de netbeans...

    ResponderEliminar
  6. por cierto, el type=i para que es? bueno, te cuento, para txt funciona pero para jpg, etc no... porque? me podrias pasar tu programa esk no lo puedo descargar del megaupload

    ResponderEliminar
  7. lo he probado con archivos pdf y me retorna un archivo en buen estado no se daña,con imagenes no lo he probado pero tranquilo ya tendre tiempo de mejorarlo para que pueda trabajar con cualquier formato de archivo, el type=i o : @ fttp son parametros que sirven para autenticar la dirreccion o conexion al servidor ftp

    ResponderEliminar
  8. pues jo te digo que lo he probado con .pdf .jpg, .txt y .mp3 i el unico que funciona bien es .txt. me podrias pasar tu programa? mi e-mail:juapegra@gmail.com

    ResponderEliminar
  9. bua, me está llevando de cabeza este programa, porque en teoría debería funcionar bien con todos los formatos, pero no es así y estoy probando muchas cosas, pero no funciona. por cierto, pásame tb la librería... por si fuera la librería, aunque no creo.Gracias por todo

    ResponderEliminar
  10. amigo es mejor que lo tomes con calma y no te llenes de estrés ten paciencia,claro tienes razón la aplicación debería de trabajar con todo tipo de formato pero lo malo que no es asi creo que la librería utilizada no lo permite por eso tengo la obligación de investigar con que otra librería trabajar para hacer una segunda entrega ten paciencia,ya cheque el link de descarga y funciona muy bien pruebalo con otro navegador o un gestor de descarga saludos que tengas un prospero año nuevo

    ResponderEliminar
  11. Gracias, lo intentaré. Te explico un poco como van mis avances(que no son muchos). Finalmente como los servidores ftp web gratuitos que hay por ahí no me gustan (ya que dejan mucho que desear), empecé a utilizar servidores ftp que se instalan en el pc. Definitivamente el programa funciona muy bien ya que puedo subir archivos y bajarlos sin problema. el problema està con determinados formatos, que por alguna razón que aún no he encontrado cuando los subo al servidor se dañan....Gracias por todo y prospero año a ti tb.

    ResponderEliminar
  12. por cierto, tienes tu aplicación en otro sitio que no sea megaupload?

    ResponderEliminar
  13. Hola Hannibal, probablemente he encontrado el problema en esta aplicación para poder enviar archivos mp3, jpg... pero no se como se hace. se ve que cuando se envía el archivo se hace por defecto en ASCII "ASCII mode for is sending text files. This is usually the default mode. Make sure you use binary mode if you are sending images or other binary data, as ASCII mode is likely to corrupt them."

    ResponderEliminar
  14. Finalmente lo conseguí. gracias por todo!!

    ResponderEliminar
  15. No es problema de librerias, el problema está en el programa. Por cierto Hannibal por todo lo que he leido en este foro ... seguro que has hecho tu esta aplicación?, no es por ofender pero con las contestaciones que das no pareces tener mucha idea sobre el, por ejemplo cuando explicas el type=i, lee esta web(http://www.cs.tut.fi/~jkorpela/ftpurl.html) probablemente aquí te enteres un poco como son las sintaxis ftp url. por cierto, el problema está en BufferedWritter... Saludos

    ResponderEliminar
  16. gracias por la opinión me ayuda a mejorar, ya lei el contenido de la web son sintaxis ftp disculpas por equivocarme como veras yo soy estudiante que esta en etapa de aprender y el poco tiempo que tengo me dedico a compartir ejemplos en el blog y si yo hice la aplicación con ayuda de internet como todos, gracias por la corrección del buffered..saludos

    ResponderEliminar
  17. Siento haber dudado, además, siento si te he ofendido, no era mi intención (he visto varias paginas con el mismo programa y más antiguas que tu blog y por eso dudé). Es un prog. básico pero cumple su acometido para archivos .txt, además me sirvió de mucho en un trabajo, pero tuve que hacer unas pequeñas modificaciones. Gracias.
    Yo también soy estudiante.

    ResponderEliminar
  18. no te preocupes casi todos nos equivocamos por eso es bueno investigar para poder seguir aprendiendo y descuida no estoy ofendido mas vale te agradezco asi aprendo...y muy pronto haré la segunda parte de este ejemplo claro mucho mas explicito

    ResponderEliminar