|     Inicio    |   |         |  |   FOROS      |  |      |      
   Elastix - VoIP B4A (Basic4Android) App inventor 2 PHP - MySQL
  Estación meteorológica B4J (Basic4Java) ADB Shell - Android Arduino
   AutoIt (Programación) Visual Basic Script (VBS) FireBase (BD autoactualizable) NodeMCU como Arduino
  Teleco - Emisora de A.M. Visual Basic Cosas de Windows Webs interesantes
Translate:
Búsqueda en este sitio:


Nuevo concurso para España, Argentina, Brasil, Chile, Colombia, Ecuador, México, Perú y Portugal.

B4A en español - Juan Antonio Villalpando
(BASIC4Android)

-- Tutorial de B4A --

Volver al índice del tutorial

____________________________

74.- FTP. Filezilla.

FTP (File Transference Protocol), Protocolo para la Transferencia de Archivos, es una forma de transferir archivos de un ordenador a otro conectado en red.Para su funcionamiento es necesario un Servidor y un Cliente.

Normalmente cuando compramos un hosting para hospedar nuestra web, también nos proporcionan un servidor FTP.
Pero nosotros vamos a instalar un Servidor FTP en nuestro ordenador para realizar nuestros ejemplos.

______________________________________________________
1.- Instalación de un Servidor FTP en nuestro ordenador.

1.- Vamos a la web de Filezilla y bajamos e instalamos el Filezilla Server.

2.- Agregamos un usuario: juan (Le ponemos password: 1234 en la opción General)
En la opción Shared folders, escribimos la dirección de una carpeta existente que será de donde se podrán bajar y subir archivos, en mi caso he puesto C:\MiFTP.

Marca todos los permisos: Read, Write, Delete, Append, Create, Delete, List y Subfolders

3.- Guardamos en la carpeta C:\MiFTP, cualquier archivo para hacer pruebas.
Hacemos una prueba rápida..... Vamos al Internet Explorer o Chrome y escribimos...

ftp://192.168.1.3                (debemos poner nuestra IP, en mi caso 192.168.1.3)


Entraremos en la carpeta C:\MiFTP.
______________________________________________________

2.- Instalación de un Cliente FTP en nuestro ordenador.

Aunque los clientes web como el Internet Explorer, FireFox, Chrome... pueden funcionar como clientes FTP, es más operarivo instalar en nuestro ordenador un cliente FTP.

1.- Vamos a la web de Filezilla y bajamos e instalamos el Filezilla Client.

2.- En Servidor escribmos la IP del Servidor, también escribimos el nombre de usuario y la contraseña que le pusimos en el Servidor.
Pulsamos "Conexión rápida"
Obtendremos dos paneles, el izquierdo es nuestro ordenador y el derecho el servidor.
Podemos arrastrar archivos y carpetas de un panel a otro.

(En nuestra prueba el servidor y el cliente es el mismo ordenador, pero podríamos entra en la carpeta C:\MiFTP desde cualquier ordenador de nuestr red local).

Si no te funciona:

- Deshabilita momentáneamente el Firewall de Windows o mejor deja pasar al puerto 21 por el Firewall de Windows.

______________________________________________________

3.- Basic4Android conecta un Servidor FTP.

1.- Ahora vamos a crear un programa en Basic4Android para conectar al servidor FTP de nuestro ordenador utilizando el emulador SDK.

2.- Para ello vamos a necesitar la librería Net. Debemos marcar la librería Net. Información sobre la librería NET.

3.- En esta página de los foros indican claramente el código que debemos utilizar.

4.- Creamos un "Layout" con 4 botones con el texto "Bajar", "Subir", "Listado" y "Cerrar"

Copia y pega este código.
Sub Process_Globals
    Dim FTP As FTP
End Sub
Sub Globals

End Sub

Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("Layout")
    
    If FirstTime Then
       ' FTP.Initialize("FTP", "midominio.com", 21, "minomnbre", "miclave")
        FTP.Initialize("FTP", "192.168.1.3", 21, "juan", "1234")        
        FTP.PassiveMode=True
    End If    
End Sub

' Bajar *********************************
Sub Button1_Click
    ' Bajar
    FTP.DownloadFile("/abc.txt", False, File.DirRootExternal, "abc.txt")
End Sub

Sub FTP_DownloadProgress (ServerPath As String, TotalDownloaded As Long, Total As Long)
Dim s As String
s = "Downloaded " & Round(TotalDownloaded / 1000) & "KB"
If Total > 0 Then s = s & " out of " & Round(Total / 1000) & "KB"
Log(s)
End Sub
' Fin de bajada
Sub FTP_DownloadCompleted (ServerPath As String, Success As Boolean)
Log(ServerPath & ", Success=" & Success)
If Success = False Then Log(LastException.Message)
End Sub

' Subir *********************************
Sub Button2_Click
    ' Subir
    FTP.UploadFile(File.DirRootExternal, "abc.txt", True, "/abc.txt")    
End Sub

Sub FTP_UploadProgress (ServerPath As String, TotalUploaded As Long, Total As Long)
Dim s As String
s = "Uploaded " & Round(TotalUploaded / 1000) & "KB"
If Total > 0 Then s = s & " out of " & Round(Total / 1000) & "KB"
Log(s)
End Sub
' Fin de subida
Sub FTP_UploadCompleted (ServerPath As String, Success As Boolean)
Log(ServerPath & ", Success=" & Success)
If Success = False Then Log(LastException.Message)
End Sub

' Listar *********************************
Sub Button3_Click
    ' Listar
    FTP.List("./")    
End Sub
' Fin de listado
Sub FTP_ListCompleted (ServerPath As String, Success As Boolean, Folders() As FTPEntry, Files() As FTPEntry)
    Log(ServerPath)
    If Success = False Then
        Log(LastException)
    Else
        For i = 0 To Folders.Length - 1
            Log(Folders(i).Name)
        Next
        For i = 0 To Files.Length - 1
            Log(Files(i).Name & ", " & Files(i).Size & ", " & DateTime.Date(Files(i).Timestamp))
        Next
    End If
End Sub
' Cerrar la conexión
Sub Button4_Click
    FTP.Close
End Sub

_______________________
- Comentarios.

Anteriormente hemos creado una carpeta llamada MiFTP en nuestro disco C:, donde se encuentra el Servidor Filezilla.
En esta carpeta hemos creado un archivo de prueba llamado abc.txt
Podemos bajar ese archivo a la tarjeta sdcard (DirRootExternal) de nuestro móvil.
Subir ese archivo (una vez que lo hemos bajado anteriormente) a desde nuestro móvil a la carpeta C:\MiFTP
Ver un listado de archivos y carpetas que se encuentran en C:\MiFTP.

Consulta el Log (pestaña abajo-derecha del editor del programa)

¿Cómo podemos ver el contenido de la tarjeta sdcard de nuestro emulador SDK?

Eso lo vimos en el tutorial de LINUX

Nos posicionamos en la carpeta donde de encuentra adb.exe y lanzamos el shell.
cd C:\Android\android-sdk\platform-tools
adb -e shell

Luego escribimos

# cd /mnt/sdcard
# ls -l

____________________________________________
- Otro botón más para poder elegir archivos.

 

En el código anterior bajamos y subimos un archivo de ejemplo (abc.txt), pero sería interesante poder elegir el archivo que queremos subir, para ello podemos utilizar la librería Dialogs.

 

 

 

 

Crear el botón 5 con el texto "Elegir archivo" y éste código...

' Elección de archivo
Sub Button5_Click
Dim fd As FileDialog
fd.FastScroll = True
fd.FilePath = File.DirInternal
'fd.ShowOnlyFolders = true
'fd.FileFilter = ".txt" ' filtra solo archivos txt
ret = fd.Show("Elección de archivo", "Aceptar", "Cancelar", "", Null) 
ToastMessageShow(ret & " : Directorio : " & fd.FilePath & CRLF & "Archivo : " & fd.ChosenName, False) 
End Sub

Con el código anterior puedes elegir un archivo. Puedes modificar el código para que sea ese el archivo que suba.

FTP.UploadFile(File.DirRootExternal, "abc.txt", True, "/abc.txt")

Igualmente puedes elegir un directorio para que sea en él donde baje el archivo

FTP.DownloadFile("/abc.txt", False, File.DirRootExternal, "abc.txt")

________________________________________________

- Passive mode. Si salen estos errores...

/abc.txt, Success=false
org.apache.commons.net.ftp.FTPConnectionClosedException: Connection closed without indication.

425 Can't open data connection.

Debes poner...
FTP.PassiveMode=True

________________________________________________

- Con un servidor de Internet.

Si queremos comunicarnos con nuestro servidor FTP mediante internet, debemos ir a la configuración de nuestro router y abrir el puerto 21.
Abrir puerto es asociar la IP local en mi caso 192.168.1.3 con el puerto 21, que es el de FTP.

Consulta como entrar en tu router, deber poner tu puerta de enlace.
Debes conocer el nombre de usuario y contraseña para entrar en la configuración de tu router.
Deber ir a una opción de tu router en donde puedes asociar IP y puerto, se suele llamar Port Forward,
En la web PortForward viene bien explicado, aunque en inglés.

También debes deshabilitar tu Firewall de Windows o que éste deje que puedan entrar en el puerto 21.

Otra cosa a tener en cuenta es que si el servidor está durante un tiempo ocioso sin que nadie le pida información, se desconecta, según esté configurado.

________________________________

- Mi correo:
juana1991@yahoo.com
- KIO4.COM - Política de cookies. Textos e imágenes propiedad del autor:
© Juan A. Villalpando
No se permite la copia de información ni imágenes.
Usamos cookies propias y de terceros que entre otras cosas recogen datos sobre sus hábitos de navegación y realizan análisis de uso de nuestro sitio.
Si continúa navegando consideramos que acepta su uso. Acepto    Más información