Page 1 of 2

oFTP:Directory() no devuelve los archivos que existem

Posted: Mon Apr 14, 2025 12:44 pm
by Enrrique Vertiz
Buen dia

Me conecto a un FTP y trato de obtener el listado de los archivos, pero siempre me devuelve en blanco, pero la carpeta tiene 13 archivos y los veo con Filezilla, ojo si hace la conexion, pero no lista nada, que puede ser, alguna ayuda ??

oInternet := TInternet():New()
IF oInternet == NIL
MsgStop("No se pudo inicializar TInternet().", "Error")
RETURN NIL
ENDIF

// Añadir FTP_PASSIVE_MODE es crucial
oFTP := tFtp():New( "ftp.ejemplo.net", oInternet, "user", "clave", 134217728 )
IF oFTP == NIL .OR. oFTP:hFTP == NIL
MsgStop( "No se pudo conectar al servidor FTP.", "Error de Conexión" )
oInternet:End()
RETURN NIL
ENDIF

aFiles := oFTP:Directory( )

aqui el aFiles no lo llena con los datos de los archivos, no lo uso hace tiempo, pero antes si funcionaba, no se que ha cambiado.
Gracias

Re: oFTP:Directory() no devuelve los archivos que existem

Posted: Mon Apr 14, 2025 2:29 pm
by acuellar
Estimado Enrique

Intenta así

Code: Select all | Expand

#include "FiveWin.ch"
*
function Main()
   aFiles:={}
   cusuario:="user"
   cpassword:="pass"
   cftpsite:="dominio.com"
   
        oCon:=Turl():New("ftp://"+cusuario+":"+cpassword+"@"+cftpsite)
        oFTP:= TIpClientFtp():New(oCon, .f.)
        oFTP:open()
        aFiles:=oFtp:ListFiles("data\*.*")
        If Len(aFiles)=0
          msgstop("No se pudo","Acceso FTP")
        Else
          xBrowse(aFiles)
        endif
        oftp:close()
Return nil

Re: oFTP:Directory() no devuelve los archivos que existem

Posted: Mon Apr 14, 2025 5:34 pm
by Enrrique Vertiz
Saludos Adhemar, gracias por tu respuesta

En esta linea: aFiles:=oFtp:ListFiles("*.*")
Me da este error (abajo adjunto), mientras reviso el foro (ya empece antes de escribir pero aun no encuentro nada) voy a revisar la clase de Javier Lloris creo que por ahi esta el camino ... tendras idea de como solucionarlo ?? trabajo con xHarbour y si estan enlazadas las librerias RTL y TIP de xHarbour ... gracias

Application
===========
Path and name: D:\Fwh\Fwh2501\samples\ftpdir03.exe (32 bits)
Size: 4,266,496 bytes
Compiler version: xHarbour 1.3.1 Intl. (SimpLex) (Build 20250226)
FiveWin version: FWH 25.01
C compiler version: Borland/Embarcadero C++ 7.7 (32-bit)
Windows 11 64 Bits, version: 6.2, Build 9200

Time from start: 0 hours 0 mins 0 secs
Error occurred at: 04/14/25, 12:06:00
Error description: Error BASE/3012 Argument error: INETSENDALL
Args:
[ 1] = U
[ 2] = C PASV

[ 3] = N 6

Stack Calls
===========
Called from: => INETSENDALL( 0 )
Called from: source\tip\client.prg => TIPCLIENTFTP:INETSENDALL( 0 )
Called from: source\tip\ftpcln.prg => TIPCLIENTFTP:PASV( 0 )
Called from: source\tip\ftpcln.prg => TIPCLIENTFTP:LIST( 0 )
Called from: source\tip\ftpcln.prg => TIPCLIENTFTP:LISTFILES( 0 )
Called from: ftpdir03.prg => MAIN( 9 )

Re: oFTP:Directory() no devuelve los archivos que existem

Posted: Mon Apr 14, 2025 5:34 pm
by Enrrique Vertiz
Saludos Adhemar, gracias por tu respuesta

En esta linea: aFiles:=oFtp:ListFiles("*.*")
Me da este error (abajo adjunto), mientras reviso el foro (ya empece antes de escribir pero aun no encuentro nada) voy a revisar la clase de Javier Lloris creo que por ahi esta el camino ... tendras idea de como solucionarlo ?? trabajo con xHarbour y si estan enlazadas las librerias RTL y TIP de xHarbour ... gracias

Application
===========
Path and name: D:\Fwh\Fwh2501\samples\ftpdir03.exe (32 bits)
Size: 4,266,496 bytes
Compiler version: xHarbour 1.3.1 Intl. (SimpLex) (Build 20250226)
FiveWin version: FWH 25.01
C compiler version: Borland/Embarcadero C++ 7.7 (32-bit)
Windows 11 64 Bits, version: 6.2, Build 9200

Time from start: 0 hours 0 mins 0 secs
Error occurred at: 04/14/25, 12:06:00
Error description: Error BASE/3012 Argument error: INETSENDALL
Args:
[ 1] = U
[ 2] = C PASV

[ 3] = N 6

Stack Calls
===========
Called from: => INETSENDALL( 0 )
Called from: source\tip\client.prg => TIPCLIENTFTP:INETSENDALL( 0 )
Called from: source\tip\ftpcln.prg => TIPCLIENTFTP:PASV( 0 )
Called from: source\tip\ftpcln.prg => TIPCLIENTFTP:LIST( 0 )
Called from: source\tip\ftpcln.prg => TIPCLIENTFTP:LISTFILES( 0 )
Called from: ftpdir03.prg => MAIN( 9 )

Re: oFTP:Directory() no devuelve los archivos que existem

Posted: Mon Apr 14, 2025 6:59 pm
by acuellar
Lo siente estimado

Utilizo MSVC22/BCC74 con Harbour x64

Re: oFTP:Directory() no devuelve los archivos que existem

Posted: Mon Apr 14, 2025 7:32 pm
by Enrrique Vertiz
Gracias, sigo revisando

Re: oFTP:Directory() no devuelve los archivos que existem

Posted: Tue Apr 15, 2025 12:43 pm
by karinha

Re: oFTP:Directory() no devuelve los archivos que existem

Posted: Tue Apr 15, 2025 2:59 pm
by CARLOS ATUNCAR
Hola he tenido ese mismo problema y el problema es con el proveedor de internet que tiene puertos cerrados, prueba conectar la pc con el wifi del celular y revisa si persiste el problema

Re: oFTP:Directory() no devuelve los archivos que existem

Posted: Tue Apr 15, 2025 9:42 pm
by Enrrique Vertiz
Saludos

Gracias Carlos, pero me pasa con los 3 proveedores mas grandes aqui Movistar, Claro y Win, cubren el 90% (aprox) de las instalaciones ... ademas Filezilla si me deja y una prueba con Chilkat tambien.

Joao gracias por los links revisare 1x1 a ver si encuentro luz ...

Re: oFTP:Directory() no devuelve los archivos que existem

Posted: Wed Apr 16, 2025 12:15 pm
by cmsoft
Yo uso otra clase para conectarme via fpt, tal vez pueda serte de ayuda.

Code: Select all | Expand

FUNCTION Main()
LOCAL  aFiles:={},   cusuario:="user@dominio.com",   cpassword:="pass",   cftpsite:="ftp://dominio.com", oUrl
oUrl := tUrl():New( cftpsite )
oUrl:cUserid := cusuario
oUrl:cPassword := cpassword
oFTP := tIPClientFtp():New( oUrl, .t. )
oFTP:nConnTimeout := 20000
oFTP:bUsePasv := .t.
oFtp:bTrace := {|| nil}
oFTP:Open()
IF oFtp <> NIL
   aFiles:=oFtp:ListFiles("data\*.*")
   xbrowse(aFiles)
ENDIF
RETURN nil

Re: oFTP:Directory() no devuelve los archivos que existem

Posted: Wed Apr 16, 2025 10:12 pm
by Enrrique Vertiz
Gracias Cesar

Cree un PRG solo con lo que me enviaste y me salio este mensaje:

Error BASE/1081 Operation not supported: TIPCLIENTFTP:New()

En esta linea:

oFTP := tIPClientFtp():New( oUrl, .t. )

Re: oFTP:Directory() no devuelve los archivos que existem

Posted: Thu Apr 17, 2025 7:00 pm
by cmsoft
Usas harbour o xharbour?
En mi caso uso harbour y tengo que incluir la libreria hbtip
En xharbour desconozco si existe

Re: oFTP:Directory() no devuelve los archivos que existem

Posted: Thu Apr 17, 2025 8:01 pm
by Enrrique Vertiz
Saludos,

Uso xHarbour y enlazo una LIB de nombre tip.lib, pero no tengo idea de si es lo mismo, gracias nuevamente.

Re: oFTP:Directory() no devuelve los archivos que existem

Posted: Thu Apr 17, 2025 8:55 pm
by cmsoft
Por lo que veo en el GitHub de xHarbour, la clase necesita de las credenciales para iniciar
No puedo probarlo porque no tengo xharbour, pero entiendo que sería algo asi:

Code: Select all | Expand

FUNCTION Main()
LOCAL  aFiles:={},   cusuario:="user@dominio.com",   cpassword:="pass",   cftpsite:="ftp://dominio.com", oUrl, oCredentials
oUrl := tUrl():New( cftpsite )
oCredentials := tIPCredentials():New()
oCredentials:cUserid := cusuario
oCredentials:cPassword := cpassword
oFTP := tIPClientFtp():New( oUrl, .t., oCredentials )
oFTP:nConnTimeout := 20000
oFTP:Open()
IF oFtp <> NIL
   aFiles:=oFtp:ListFiles("data\*.*")
   xbrowse(aFiles)
ENDIF
RETURN nil
No se si funcione, porque no lo probe, pero aca tenes el link por si te interesa mirar.
https://github.com/xHarbour-org/xharbou ... client.prg

Re: oFTP:Directory() no devuelve los archivos que existem

Posted: Thu Apr 17, 2025 10:59 pm
by Enrrique Vertiz
Gracias nuevamente por tu apoyo, sale error :

Application
===========
Path and name: D:\Fwh\Fwh2501\samples\ftpdir04.exe (32 bits)
Size: 4,267,520 bytes
Compiler version: xHarbour 1.3.1 Intl. (SimpLex) (Build 20250226)
FiveWin version: FWH 25.01
C compiler version: Borland/Embarcadero C++ 7.7 (32-bit)
Windows 11 64 Bits, version: 6.2, Build 9200

Time from start: 0 hours 0 mins 0 secs
Error occurred at: 04/17/25, 17:50:45
Error description: Error BASE/1081 Operation not supported: TIPCLIENTFTP:New()
Args:
[ 1] = O TIPCLIENTFTP
[ 2] = C


El codigo:

#include "FiveWin.ch"

FUNCTION Main()
LOCAL aFiles:={}, cusuario:="usuario", cpassword:="pass", cftpsite:="ftp.xxx.net", oUrl, oFtp, oCredentials
oUrl := tUrl():New( cftpsite )
oCredentials := tIPCredentials():New()
oCredentials:cUserid := cusuario
oCredentials:cPassword := cpassword
oFTP := tIPClientFtp():New( oUrl, .t., oCredentials )
oFTP:nConnTimeout := 20000
oFTP:bUsePasv := .t.
oFtp:bTrace := {|| nil}
oFTP:Open()
IF oFtp <> NIL
aFiles:=oFtp:ListFiles("*.*")
xbrowse(aFiles)
ENDIF
RETURN nil

Seguire viendo, porque si funciona en Hb y no en xHb