Descargar un archivo por FTP

2,396 views
Skip to first unread message

l.montt

unread,
Nov 8, 2011, 12:37:39 PM11/8/11
to desarrolladores-android
Hola,
Alguien me podría dar una manito en como implementar la descarga de un
archivo a través de FTP, lo que pasa es que estoy desarrollando una
app el cual necesito descargar un archivo.mp3 desde un servidor y
pienso que a través de FTP podria ser una buena forma pero no se como.
alguien que me pueda ayudar con algún tutorial sobre FTP??
conocen otra forma en la cual se pueda realizar esta operación de
descarga??
Gracias.

Leonardo Garcia

unread,
Nov 8, 2011, 12:39:20 PM11/8/11
to desarrollad...@googlegroups.com
No te convendria bajarlo directamente por HTTP? O no quieres que este
publico el archivo?

2011/11/8 l.montt <l.m...@gmail.com>:

> --
> Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
> Para publicar una entrada en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
> Para anular tu suscripción a este grupo, envía un correo electrónico a desarrolladores-a...@googlegroups.com
> Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/desarrolladores-android?hl=es.
>
>

--
Saludos

Leonardo Garcia

luis montt

unread,
Nov 8, 2011, 12:46:41 PM11/8/11
to desarrollad...@googlegroups.com
Hola Leonardo,
pueder ser por http sin que el usuario vea la url?

Leonardo Garcia

unread,
Nov 8, 2011, 1:07:59 PM11/8/11
to desarrollad...@googlegroups.com
Claro, a ver si consigo algun ejemplo para descargar un archivo via HTTP.....

Ahora te escribo

2011/11/8 luis montt <l.m...@gmail.com>:

Leonardo Garcia

unread,
Nov 8, 2011, 1:10:34 PM11/8/11
to desarrollad...@googlegroups.com
Mira, aqui encontre un ejemplo que hace justamente esto que te digo.


http://www.helloandroid.com/tutorials/how-download-fileimage-url-your-device

Creo que con eso lo puedes resolver perfectamente, ya que guarda el
archivo descargado en la memoria del equipo ( y luego tu puedes tomar
esta ruta para reproducirlo )

Espero que te sirva.

UN saludo


2011/11/8 Leonardo Garcia <col...@gmail.com>:

--
Saludos

Leonardo Garcia

Leonardo Garcia

unread,
Nov 8, 2011, 1:12:37 PM11/8/11
to desarrollad...@googlegroups.com
Te tiro un tip mas, si podes escribir lo que necesitas en ingles en el
google, casi siempre vas a dar con ejemplos.

Para encontrar el ejemplo que te cite, simplemente escribi en google
"android download file from url" y ese es el primer resultado de la
busqueda :)

Saludos!

2011/11/8 Leonardo Garcia <col...@gmail.com>:

--
Saludos

Leonardo Garcia

Leandro Spadaro

unread,
Nov 8, 2011, 1:13:18 PM11/8/11
to Java android

Hola,
 
Mira hace poco estuve viendo lo mismo, para cargar y descargar archivos FTP, para conectarse y subier archivos funciona genial, el problema lo tengo para
descargar archivos. Te paso los metodos. Sino podes probar con un ejemplo que esta en la pagina de AndFTP es una aplicacion Cliente que se instala en android
ellos muestran como escribir el codigo de la descarga, yo todavi no lo pruebo http://www.lysesoft.com/products/andftp/intent.html tenes un proyecto eclipse.
Luego comentame como te fue, ya que estoy en lo mismo.
 
saludos.
Leo.
 
 
 

private

static FTPClient conectarFTP (String ipServer, String usuario, String clave)throws ConectividadException{

try{

FTPClient ftpClient =

new FTPClient();

ftpClient.connect(InetAddress.getByName(ipServer));

ftpClient.login(usuario, clave);

return ftpClient;

}

catch (Exception ex) {

throw new ConectividadException ("Error de sistema");

}

}

public static void subirArchivoFTP(String ipServer, String usuario, String clave, String nombreArchivoSdCar, String pathServidor, String nombreArchivoServidor) throws ConectividadException{

FTPClient ftpClient =

new FTPClient();

try {

ftpClient = conectarFTP(ipServer, usuario, clave);

ftpClient.changeWorkingDirectory(pathServidor);

ftpClient.setFileType(org.apache.commons.net.ftp.FTP.

BINARY_FILE_TYPE);

BufferedInputStream buffIn =

new BufferedInputStream(new FileInputStream("/sdcard/"+ nombreArchivoSdCar));

ftpClient.enterLocalPassiveMode();

ftpClient.storeFile(nombreArchivoServidor, buffIn);

buffIn.close();

ftpClient.logout();

ftpClient.disconnect();

}

catch (Exception ex) {

throw new ConectividadException ("Error de sistema");

}

}

public static void bajarArchivoFTP (String ipServer, String usuario, String clave, String nombreArchivoSdCar, String pathServidor, String nombreArchivoServidor) throws ConectividadException{

FTPClient ftpClient =

new FTPClient();

DataInputStream inputStream =

null;

BufferedReader bufferedReader =

null;

try{

ftpClient = conectarFTP(ipServer, usuario, clave);

ftpClient.setFileType(org.apache.commons.net.ftp.FTP.

BINARY_FILE_TYPE);

//ftpClient.changeWorkingDirectory(pathServidor);

//ftpClient.retrieveFileStream(pathServidor + nombreArchivoServidor);

InputStream myFileStream =

null;

if (ftpClient.isConnected()){

myFileStream = ftpClient.retrieveFileStream(

nombreArchivoServidor);

}

//inputStream = new DataInputStream(myFileStream);

//bufferedReader = new BufferedReader(new InputStreamReader(inputStream));

File fileToWrite =

new File("/sdcard/"+ nombreArchivoSdCar);

java.io.FileOutputStream fos =

new java.io.FileOutputStream(fileToWrite);

java.io.BufferedOutputStream bout =

new BufferedOutputStream(fos,1024);

byte data[] = new byte[1024];

int x = 0;

while((x=myFileStream.read(data,0,1024))>=0){

bout.write(data,0,x);

}

bout.close();

myFileStream.close();

}

catch (Exception ex) {

throw new ConectividadException ("Error de sistema");

}

}
 
 
 

Date: Tue, 8 Nov 2011 13:46:41 -0400
Subject: Re: [desarrolladores-android.com] Descargar un archivo por FTP
From: l.m...@gmail.com
To: desarrollad...@googlegroups.com

luis montt

unread,
Nov 8, 2011, 1:50:32 PM11/8/11
to desarrollad...@googlegroups.com
probe el siguiente codigo y funciona descargando el archivo a la sd del emulador, el problema que se me presento ahora es que el audio del archivo mp3 queda con sonidos defectuosos no se porque será.
vere y probare la informacion que enviaste, por mientras dejo el codigo que si funciona pero que deja defectuoso el sonido del archivo por si alguien sabe a que se debe:


    
            int port = 22; 
            String username = "x...@servidor.cl"; 
            String password = "esta es la clave.,"; 
            String url = "http://www.pagina.cl/carpetaMp3/"; 
            try{ 
            Log.v("Test de ftp","ENTRAMOS AL TRY");
                DefaultHttpClient httpclient = new DefaultHttpClient(); 
                httpclient.getCredentialsProvider().setCredentials( 
                            new AuthScope(url, port), 
                            new UsernamePasswordCredentials(username, password));
                
                URI uri = new URI(url+fileName);
                HttpGet method = new HttpGet(uri); 
                HttpResponse response = httpclient.execute(method);
                InputStream in = response.getEntity().getContent();
                
                ////////////////////////////////////////////////////////////
                File ruta_sd       = Environment.getExternalStorageDirectory();
                FileOutputStream f = new FileOutputStream(new File(ruta_sd.getAbsolutePath() , fileName));
                ////////////////////////////////////////////////////////////
                
                byte[] buffer = new byte[1024]; 
                int len1 = 0; 
                while ( (len1 = in.read(buffer)) > 0 ) { 
                    f.write(buffer); 
                } 
                f.close(); 
                Log.v("Test de ftp", "ARCHIVO DESCARGADO EXITOSAMENTE"); 
            }catch (ClientProtocolException e) { 
                // TODO Auto-generated catch block
            Log.v("Test de ftp", "ERROR 1"); 
                e.printStackTrace(); 
            }catch (IOException e) { 
                // TODO Auto-generated catch block
            Log.v("Test de ftp", "ERROR 2");
                e.printStackTrace(); 
            }catch (URISyntaxException e) { 
                // TODO Auto-generated catch block
            Log.v("Test de ftp", "ERROR 3");
                e.printStackTrace(); 
            } 

Leandro Spadaro

unread,
Nov 8, 2011, 1:53:19 PM11/8/11
to Java android
Ok gracias,
 
http://androiddev.orkitra.com/?p=28
 
aca tenes otro ejemplod e ftp por las dudas.
 
saludos.
Leo.
 

Date: Tue, 8 Nov 2011 14:50:32 -0400

Juan de Dios Maldonado Sánchez

unread,
Nov 9, 2011, 3:30:13 AM11/9/11
to desarrollad...@googlegroups.com
Seguro que el sonido se escucha defectuoso debido a que el emulador se está ejecutando muy lentamente.

2011/11/8 Leandro Spadaro <leo_s...@hotmail.com>



--
An'Brain - Prueba el nuevo widget inteligente para tu Android.
Idiotizer Free - Idiotiza a tus amigos. (Se requieren auriculares)
Track My App - Realiza un seguimiento de tus aplicaciones en el Android market.

luis montt

unread,
Nov 9, 2011, 9:51:21 AM11/9/11
to desarrollad...@googlegroups.com
Hola Juan,
yo pensé lo mismo que tu y por eso realice una prueba en mi teléfono pero tuve el mismo problema del audio defectuoso,

solucione el problema de la descarga basándome en este ejemplo:
y me funciona bien descargando el archivo.mp3 a la tarjeta SD y con un buen audio, ahora no se que tal es este código para realizar esta operación, a lo que me refiero es que no se si sera recomendable en el sentido de:
- compatibilidad con las distintas versiones de android
- si es codigo "deprecated" 
- etc. etc

Por lo menos lo probé en el emulador para android 1.6 y en un telefono galaxy S con android 2.3.3 , ambos con resultados exitosos
Saludos.

carlos alejandro chan bacelis

unread,
Nov 9, 2011, 7:01:23 PM11/9/11
to desarrolladores-android
Primero, debes especificar si usaras la API para unicode o ansi, te
recomiendo ANSI y llamarías a las API así:
InternetOpenA
InternetConnectA
FtpGetFileA

Pesta.png esta en root del FTP de donde lo quieres bajar?, si no es
así debes pasarle el path completo.

"C:\A.png" -> Aquí tienes otro error recuerda que \ se representa en \
\, así que te deberia quedar así:
"C:\\A.png".

Aquí te dejo más información sobre las API, te recomiendo leer un
poquito más.
http://msdn.microsoft.com/en-us/library/aa385096(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/aa384363(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/aa384157(v=vs.85).aspx

Saludos.

Sam Guzman

unread,
Jul 3, 2015, 3:13:30 PM7/3/15
to desarrollad...@googlegroups.com
Cual ejemplo usaste????


2011/11/8 Leandro Spadaro <leo_s...@hotmail.com>
> Para anular tu suscripción a este grupo, envía un correo electrónico a desarrolladores-android+unsub...@googlegroups.com

> Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/desarrolladores-android?hl=es.
>
>



--
Saludos

Leonardo Garcia

--
Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a desarrolladores-android+unsub...@googlegroups.com

Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/desarrolladores-android?hl=es.


--
Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a desarrolladores-android+unsub...@googlegroups.com

Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/desarrolladores-android?hl=es.

--
Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a desarrolladores-android+unsub...@googlegroups.com

Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/desarrolladores-android?hl=es.

--
Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a desarrolladores-android+unsub...@googlegroups.com

Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/desarrolladores-android?hl=es.

--
Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a desarrolladores-android+unsub...@googlegroups.com

Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/desarrolladores-android?hl=es.
--
An'Brain - Prueba el nuevo widget inteligente para tu Android.
Idiotizer Free - Idiotiza a tus amigos. (Se requieren auriculares)
Track My App - Realiza un seguimiento de tus aplicaciones en el Android market.

--
Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a desarrolladores-android+unsub...@googlegroups.com
Reply all
Reply to author
Forward
0 new messages