Quiero utilizar ésta función para bajarme ficheros via ftp
Code: Select all
#include "fivewin.ch"
memvar publicas
Function Mandaf()
Local oInternet, oFtp, cServFtp:="xxxx.com",cUserFTp:="xxxxxx",cPassFtp:="xxxxxx"
local asource:={"/html/recepcion/"}
local aTarget:={Publicas:cUnidad}
local osay
oInternet := TInternet():New()
oFTP := TFTP():New( Alltrim(cServFtp), oInternet, Alltrim(cUserFtp),Alltrim(cPassFtp) )
If ! Empty( oFTP:hFTP )
FtpGetFiles( aSource, aTarget, oFTP, oSay)
Endif
oInternet:End()
Return (nil)
Function FtpGetFiles( aSource, aTarget, oFTP, oSay)
Local nBufSize:=4096
local n
local hTarget
local cBuffer := Space( nBufSize )
local nBytes, nFile := 0, nTotal := 0
local nTotSize := 0 ,fic
local oFile, aFiles, aSizes := {}
local nomfich:={}
for n = 1 to Len( aSource )
aFiles = oFTP:Directory( aSource[ n ] )
AEval( aFiles, { | aFile | AAdd(nomfich, aFile[ n ] ) } )
if Len( aFiles ) > 0
AAdd( aSizes, aFiles[ 1 ][ 2 ] ) // first file, size
nTotSize += ATail( aSizes )
else
AAdd( aSizes, 0 )
endif
SysRefresh()
next
nFile := 0
for n = 1 to Len( aSource )
hTarget = FCreate( aTarget[ n ]+nomfich[n])
oFile = TFtpFile():New( aSource[ n ], oFTP )
oFile:OpenRead()
SysRefresh()
while ( nBytes := Len( cBuffer := oFile:Read( nBufSize ) ) ) > 0
FWrite( hTarget, cBuffer, nBytes )
msgwait ("- Recibiendo :"+Str(nFile+=nBytes)+" de "+Str(nTotSize))
SysRefresh()
end
FClose( hTarget )
oFile:End()
next
return nil
Todos los ejemplos que he visto de ftp vienen para bajarse unos fiheros determinados, pero yo lo que quiero es que me baje todos los ficheros que haya en el ftp, y ahí es cuando me lío.
A ver si alguien me ayuda
Saludos
Jose Luis