https://foro.gambas-es.org/viewtopic.php?f=5&t=3056
-----------------------------------
shordi
Friday, 12 April 2013, 12:48

Proyecto De Cliente FTP
-----------------------------------
Dadas las necesidades de acceso amplio a FTP del programa que estoy desarrollando, me he visto obligado a profundizar en el uso del FTPClient de Gambas3.
El resultado es el programa que os ofrezco hoy. Está calentito, calentito, en fase pre-pre-pre-Alfa, en esa fase en la que si alguien se implica en probarlo e informar de los errores la cosa anda mucho más rápido.
Me he divertido mucho aprendiendo a manejar treeviews y otros controles de los que no suelo ser usuario habitual. 

No es el filezilla, que digamos... pero poco a poco, poco a poco.

Os presento a GB-FTP, tóma originalidad para un gambas ftp...

 [img]http://foro.gambas-es.org/files/images/38/gbftp_inicial.png[/img] 
 [img]http://foro.gambas-es.org/files/images/38/gbftp_principal.png[/img] 

Disfrutadlo (o sufridlo, quien sabe)


-----------------------------------
jguardon
Sunday, 14 April 2013, 02:13

Re: Proyecto De Cliente FTP
-----------------------------------
No funciona cuando intento conectar al servidor. Salen unas carpetas raras en el servidor remoto que realmente no existen. No sé que está pasando, cuando tenga un ratillo lo miro más detenidamente.

Por cierto, ¿cómo es que comparas una variable string si es mayor que 0? Basta con decir "if string then", porque si la cadena está vacía es false y true en caso contrario. ¿Son costumbres de otro lenguaje, quizaś?

Saludos


-----------------------------------
shordi
Sunday, 14 April 2013, 07:14

Re: Proyecto De Cliente FTP
-----------------------------------
[quote]
No funciona cuando intento conectar al servidor. Salen unas carpetas raras en el servidor remoto que realmente no existen. No sé que está pasando, cuando tenga un ratillo lo miro más detenidamente.
[/quote]
A mí me va perfectamente en mi servidor, pero no lo he probado en otro. No sé cómo se comporta con servidores ftp que manejen ssh (creo que no funcionaría) ni sé muy bien qué tipo de comandos FTP utiliza el control ftpClient.
Si me pasas los parámetros de tu servidor puedo intentar depurar más pero, de momento, no tengo acceso a más servidor FTP que el mío y ahí si funciona sin problemas.


[quote]Por cierto, ¿cómo es que comparas una variable string si es mayor que 0? Basta con decir "if string then", porque si la cadena está vacía es false y true en caso contrario. ¿Son costumbres de otro lenguaje, quizaś?[/quote]

Jeje, estoy lleno de vicios y malas costumbres... No me llega a gustar esa forma moderna del if, porque añade su propia interpretación que, a veces, olvido y ya me ha llevado a algún que otro error. Por ejemplo Si un número es 0 es false, pero ¿si es -1 qué es? porque hay funciones que devuelven 0 y otras -1 y hay bases de datos que almacenan 0 falso 1 verdadero y otras -1 verdadero, según hayan definido el campo boolean o el integer como unsigned, etc.
La comprobación "artesanal" me es más cómoda. Vicios de viejo dinosaurio, supongo.


-----------------------------------
shordi
Sunday, 14 April 2013, 07:34

Re: Proyecto De Cliente FTP
-----------------------------------
Al hilo de las precisiones de Jesús (que de entrada puede no funcionar en algunos servidores) me gustaría que alguien pudiese aportar algo a ciertas cosas que no he sabido/podido conseguir:

-¿Cómo se edita un TreeView?, pues veo que tiene la propiedad Editable para determinar si se puede editar, pero luego no he visto por ningún lado el método Edit. TreeView hereda de GridView y un GridView no es editable ¿o es de TableView y entonces sí lo es? No he encontrado ninguna información al respecto, por lo que he solucionado el tema con un rodeo que simula la edición a la hora de añadir una carpeta remota.

-¿Cómo recuperar la información de consola de FTP? Cuando la conexión está en modo debug, en la consola de Gambas aparece perfectamente, pero en tiempo de ejecución no he encontrado la manera de hacer eso.

-¿De dónde se pueden sacar los iconos de los tipos de documento? El control fileview te saca un iconito junto al nombre del archivo según sea un pdf, una carpeta, un documento de office, etc. La carpeta la he podido sacar del stock, pero el resto de iconos no sé dónde los tiene el sistema y cómo los puedo recuperar.

-En las bajadas he podido implementar una barra de progreso gracias Touch, que me da el tamaño del fichero bajado y cómo va creciendo, pero no he conseguido implementar una barra de progreso en las subidas (como no sea una basada en el número de ficheros subidos y pendientes, que no tiene mucho sentido) ¿Alguien sabe cómo detectar, aunque sea de modo aproximado, la cantidad de datos enviados?

-¿A qué huelen las nubes? 

-Si un pato se come un saco de serrín ¿Cúanto tarda en cagar un tablón de aglomerado de 2 metros?

Preguntas, preguntas...

Dado el poco interés despertado, 3 descargas de momento, de las cuales una la hice yo por probar, no confío mucho en que salgan muchos probadores (la experiencia dice que ninguno, que nadie tiene tiempo... jejeje) por lo que saco las preguntas aquí y que sea lo que dios quiera.

Saludos.


-----------------------------------
jguardon
Monday, 15 April 2013, 21:24

Re: Proyecto De Cliente FTP
-----------------------------------
Hola de nuevo

A la pregunta del pato no creo que pueda contestar, pero si aún viviera Rodríguez de la Fuente, él era buen candidato para contestar.

Bueno, todavía no sé por qué con el directorio por defecto "/" se ven unas carpetas muy raras al conectar, carpetas que ni por asomo existen en la raíz de ftp.

Sin embargo, si le doy la ruta a uno de los directorios que cuelgan de / entonces la cosa parece que funciona pero... peta. Te envío una captura del IDE en el momento del error con la vista de depuración del array "ar" (muy original el nombre, por cierto) que contiene las rutas de cada fichero o directorio que recupera del servidor. 

Evidentemente es un problema de análisis de los datos obtenidos, pues parece que no todos los servidores devuelven el mismo esquema de información de ficheros. De modo que la función Mid en la línea 75:

[code linenumbers=false syntax=gambas]size = ctamanio(Mid(cad, 37, 12))[/code]

...devuelve una porción de cadena que no corresponde al tamaño del fichero. Hay trabajo por hacer, desde luego  :grin: 

Te envío por MP la captura del error porque puede contener información sensible del servidor.

Saludos


-----------------------------------
shordi
Tuesday, 16 April 2013, 09:13

Re: Proyecto De Cliente FTP
-----------------------------------
Jesus:
¿Me podrías mandar el fichero que devuelve la consulta? lo tendrás en /tmp/gambas... etc Se le asigna ubicación en la línea 62. Es que con la imagen tal como me la envías no puedo contar bien caracteres y demás para hacer comparativas.

Saludos


-----------------------------------
shordi
Tuesday, 16 April 2013, 20:55

Re: Proyecto De Cliente FTP
-----------------------------------
Corregido el bug de la recuperación de nombres. 
Le he añadido la posibilidad de guardar los datos de la conexión vía gb.settings para futuras conexiones.
Poco a poco...


Saludos


-----------------------------------
jguardon
Tuesday, 16 April 2013, 22:13

Re: Proyecto De Cliente FTP
-----------------------------------
Ahora sí va, jejeje. 

Bueno, pues ahora hay que darle el toque profesional... a ver si puedo mejorar algo o implementar el progreso en las subidas... también he notado que es bastante lento para navegar carpetas, esto no tengo claro si es porque cada vez que realizas una operación se cierra la conexión  y hay que volver a abrirla o qué? Tengo que mirarlo más despacio.

Saludos y gracias por las correcciones


-----------------------------------
shordi
Wednesday, 17 April 2013, 08:33

Re: Proyecto De Cliente FTP
-----------------------------------
La lentitud la da el propio ftpClient, que no permite comandos list  o mlsd (o yo no he sabido ejecutarlos). La única manera que he encontrado es hacer un get sobre la carpeta en sí misma y luego extraer los datos del fichero generado. Es un poco peñazo... pero funciona.
Si la conexión se cierra o abre en cada ocasión...¿Quién sabe? yo, por lo menos, no la cierro.
Por lo demás... todo tuyo, compañero. Si lo mejoras ponte en los créditos... jejeje

Saludos


-----------------------------------
shordi
Wednesday, 17 April 2013, 08:59

Re: Proyecto De Cliente FTP
-----------------------------------
Por cierto, buen candidato para el SVN... creo.


-----------------------------------
jguardon
Wednesday, 17 April 2013, 14:03

Re: Proyecto De Cliente FTP
-----------------------------------
[quote user="shordi" post="17366"]Por cierto, buen candidato para el SVN... creo.[/quote]

Quieres que lo suba? Te abro una cuenta y te mando datos por privado. Esta aplicación puede crecer y la veo interesante... un cliente ligero ftp. Lo próximo será implementar tareas con la clase Task para subidas y bajadas simultáneas  :shock: 

Saludos


-----------------------------------
arubioc
Wednesday, 17 April 2013, 15:31

Re: Proyecto De Cliente FTP
-----------------------------------
Yo el mayor problema que me he encontrado es con los timeouts.
hay que gestionarlos correctamente, si no las subidas no son correctas.


-----------------------------------
shordi
Wednesday, 17 April 2013, 18:10

Re: Proyecto De Cliente FTP
-----------------------------------
¿Puedes ampliar un poco? Tamaño de lo que has subido, qué pasó etc. etc. 

Gracias de antemano.


-----------------------------------
shordi
Wednesday, 17 April 2013, 18:11

Re: Proyecto De Cliente FTP
-----------------------------------
¿Clase Task?  No tenía ni idea de que existiera tal cosa. Investigando...


