¿Cómo hacer algo tipo GetFile() usando la vfpconnection.fll?

1,024 views
Skip to first unread message

RickDeCastro

unread,
Nov 15, 2012, 4:49:46 PM11/15/12
to publice...@googlegroups.com
Hola grupo.
 
Estoy tratando de usar la "vfpconnection.fll" para acceder a una carpeta en un servidor FTP y descargar un archivo a determinar.
El detalle es que tengo que mostrar al usuario cuales archivos se encuentran en dicha carpeta y permitirle elegir qué archivo quiere descargar. Para ello pretendo utilizar un listbox.
El problema es que no he encontrado en la documentación desa librería de Craig Boyd, una forma de obtener los nombres de dichos archivos de la carpeta mencionada.
¿Alguien tiene una idea de si es posible hacerlo con dicha librería?
 
Si es que no se puede, creo que tendré que crear a mano una función que utilice la wininet.dll para dicho fin. O alguien ya la tiene hecha? =)
 
Gracias anticipadas por cualquier ayuda.
 
Saludos listables
Ricardo De Castro Aquino
Asunción - Paraguay

Antonio.xt

unread,
Nov 15, 2012, 5:16:42 PM11/15/12
to publice...@googlegroups.com

Yo hace poco tiempo hice un proyecto asi, tenia que enviar archivos a un servidor FTP, ver la lista de archivos de una carpeta del servidor FTP, buscar un archivo y bajar un archivo desde el servidor FTP.

Cuando lo hice estaba probando 2 herramientas: iFox y vfpConection.fll

Me iva a decidir por vfpConection debido a que es una libreria 100% Fox y solo la copias en la carpeta de tu proyecto, y con iFox tienes que hacer instalacion y activarla con un codigo de licencia (que es gratuito); pero al final me decidi por iFox porque con vfpConection no supe como obtener la lista de los archivos de una carpeta del servidor FTP, aunque me imagino que debe tener una funcion para eso.

Saludos...

Charles A. Moreno
Monterrey, Mexico

decastro

unread,
Nov 15, 2012, 7:10:29 PM11/15/12
to publice...@googlegroups.com
Sip, yo pensé en usar el iFox también, pero el tema es que mi cliente necesita esto implementado lo más pronto posible y tengo entendido que tarda un poco conseguir la licencia para esa herramienta.

Por eso pienso que, si no hay forma nativa con el vfpConnection, yo podría hacer una función mía que complemente esta deficiencia, utilizando la wininet. Aunque también me tomará algo de tiempo, por ello ya estoy investigando al respecto.

---

Saludos cordiales
 
Lic. Ricardo De Castro Aquino
Analista de Sistemas Senior
CO.DE.S.I.
---
Tel.: (595 21) 527 119
Asunción – Paraguay

 


 

--
 
 
 

Ricardo Pina

unread,
Nov 15, 2012, 6:13:10 PM11/15/12
to Grupo VFP
Hola Tocayo
 
Si quieres probar te tiro una punta como para empezar.
 
En el sitio de sweetpotatosoftware puedes ver este ejemplo para renombrar una carpeta del servidor
 
********************************************************************
*!* FTP Commands Example
********************************************************************
*!* Rename FTP Directory
SET LIBRARY TO (LOCFILE("vfpconnection.fll","FLL"))
LOCAL ARRAY aryFTPCommands(4)
aryFTPCommands(1) = "CWD /"
aryFTPCommands(2) = "PWD"
aryFTPCommands(3) = "RNFR MyDir"
aryFTPCommands(4) = "RNTO RenamedMyDir"
?FTPCommands("
FTP://username:pass...@somedomain.com/", @aryFTPCommands, "MyTrace()")
*!* ?FTPSCommands("FTPS://username:pass...@somedomain.com/", @aryFTPCommands, "MyTrace()")
SET LIBRARY TO
 
Habria que probar con el siguiente comando
 
método de protocolo FTP NLIST, que obtiene una lista corta de los archivos de un servidor FTP.
 
Tienes para divertirte, je
 
Saludos
 
 


--
 
 
 



--
            

                   Ricardo Pina

Desarrollo y Servicios Informáticos

                  Profesionales
               www.dsip.com.ar

 

 


decastro

unread,
Nov 15, 2012, 9:20:31 PM11/15/12
to publice...@googlegroups.com
Sí,
He visto el ejemplo para RENOMBRAR un directorio. Por supuesto, no es mi caso.
Seguiré trabajando en la lectura de la carpeta vía wininet.dll.
Gracias por contestar.

---

Saludos cordiales
 
Lic. Ricardo De Castro Aquino
Analista de Sistemas Senior
CO.DE.S.I.
---
Tel.: (595 21) 527 119
Asunción – Paraguay

 


 

--
 
 
 

Mario López

unread,
Nov 15, 2012, 8:31:14 PM11/15/12
to publice...@googlegroups.com
@Rick:

no lo probé, pero el comando FTP para un directorio es LIST, así que algo así podría andar:

---
SET LIBRARY TO (LOCFILE("vfpconnection.fll","FLL"))
LOCAL ARRAY aryFTPCommands(3)

aryFTPCommands(1) = "CWD /"
aryFTPCommands(2) = "PWD"
aryFTPCommands(3) = "LIST"

?FTPCommands("FTP://username:pass...@somedomain.com/", @aryFTPCommands, "MyTrace()")
---

(adaptado del ejemplo de vfpconnection.dll)

HTH
Mario

---

Walter R. Ojeda Valiente

unread,
Nov 15, 2012, 8:36:27 PM11/15/12
to publice...@googlegroups.com
Recuerdo que una vez quise obtener todos los archivos de una carpeta remota usando VFPCONNECTION.DLL, pero no lo logré enseguida y por eso desistí, no era algo urgente y era mucho más rápido hacerlo manualmente, quise automatizar el proceso pero como iba para largo lo deseché.

Así que si llegas a descubrir la manera de lograrlo, te agradecería que me la dijeras.

Saludos.

Walter.

"Si puedes razonar con gente religiosa, no son gente religiosa". Dr. House




Date: Thu, 15 Nov 2012 22:20:31 -0400
From: deca...@netvision.com.py
To: publice...@googlegroups.com
Subject: Re: [vfp] ¿Cómo hacer algo tipo GetFile() usando la vfpconnection.fll?
--
 
 
 

Walter R. Ojeda Valiente

unread,
Nov 15, 2012, 8:46:49 PM11/15/12
to publice...@googlegroups.com
El problema es que por alguna extraña razón no permite obtener la lista de todos los archivos, porque si se pudiera obtener esa lista el procesamiento de la misma ya sería muy fácil.


Saludos.

Walter.

"Si puedes razonar con gente religiosa, no son gente religiosa". Dr. House




Date: Thu, 15 Nov 2012 17:31:14 -0800
From: guag...@gmail.com
To: publice...@googlegroups.com
Subject: [vfp] Re: ¿Cómo hacer algo tipo GetFile() usando la vfpconnection.fll?
--
 
 
 

Robert Martínez

unread,
Nov 15, 2012, 10:07:20 PM11/15/12
to publice...@googlegroups.com

Te recomiendo utilizar FTP Class 2.X.Y si base on FTP Services for Visual Foxpro 5.0+ written by Robert Abram.  http://gorila.netlab.cz/download/ftpc/ftpc_2.0.9_20110213.zip, es puro VFP, es un solo archivo .prg

La solución a tu problema la tienes en el metodo "ReadTree",

Robert Martínez

unread,
Nov 15, 2012, 10:30:35 PM11/15/12
to publice...@googlegroups.com


Esta clase FTP tiene una muy buena documentación y una enorme cantidad de ejemplos, visita la página del autor (http://gorila.netlab.cz/ftpc20.html)

Dentro de los ejemplo, este es el que creo puede servir para lo que necesitas.

Local loFTP,lii,lcAlias,lcAResult
Local Array laFolders(1)
#INCLUDE ftp.h
Set Procedure To ftp.prg Additive
loFTP=Createobject('ftp_service')
lcAlias=Sys(2015)
lcAResult=Sys(2015)
If loFTP.OpenInternet("ABONNE", "PWD", "10.10.10.10", "21")
    llNext=loFTP.ReadTree("",.T.,lcAlias)
    If llNext
        Select Padr(folder+"/"+Name,254),ALTERNAME M, Size, Cd, LAT, LWT, Attrib From (lcAlias) Into Cursor (lcAResult)
        Select (lcAResult)
        Browse Normal
    Else
        ?loFTP.GetExtendedErrorCode(),loFTP.GetExtendedErrorMsg()
    Endif
    =loFTP.CloseInternet()
Endif
If Used(lcAlias)
    Use In (lcAlias)
Endif
If Used(lcAResult)
    Use In (lcAResult)
Endif
Release Procedure ftp.prg





El jueves, 15 de noviembre de 2012 17:49:46 UTC-4, RickDeCastro escribió:

decastro

unread,
Nov 16, 2012, 10:36:51 AM11/16/12
to publice...@googlegroups.com
Hola Robert.
Antes que nada, Gracias por la indicación. No conocía esta clase.

Te comento que, esta noche, he logrado crear un pequeño programita que hace básicamente lo que hace ese ejemplo que me enviaste, o sea: abre una conexión al FTP, carga el contenido de la carpeta en un cursor, cierra la conexión  y despliega el cursor en un browse. Todo eso usando directamente la API WinINet.dll.

Sin embargo, quise tratar de usar la clase que me enviaste para poder acceder a las demás opciones.
Infelizmente, ¡NO ME FUNCIONÓ! Se cuelga exactamente en el método ReadTree() que realmente es el que me interesa. Voy a tratar de depurar un poco más, pero si se me hace duro voy a apelar al código directo ya que el tiempo que tengo para implementar esto es muy corto.


---

Saludos cordiales
 
Lic. Ricardo De Castro Aquino
Analista de Sistemas Senior
CO.DE.S.I.
---
Tel.: (595 21) 527 119
Asunción – Paraguay

 


 

--
 
 
 

e.ru...@gmail.com

unread,
Jan 18, 2018, 7:19:01 PM1/18/18
to Comunidad de Visual Foxpro en Español
Aunque la consulta es antigua, quería aportar una solución alternatica por si alguién más (al igual que yo desea listar los archivos del FTP y con LIST no lo consigue)...

Set Library To (Locfile("vfpconnection.fll","FLL"))
m.lcString1 = FTPToStr("FTP://"+cUsuario+":"+cPasswrd+"@"+cPagina+":"+cPuerto+"/"+cRutaFTP, "MyCommand()")
nLineas = Alines(aLineas,lcString1)
For nX=1 To nLineas
If Left(aLineas(nX),1)="-"
? Substr(aLineas(nX),Rat(Chr(32),aLineas(nX))+1)
Endif
Next
Endcase
Set Library To
Reply all
Reply to author
Forward
0 new messages