Recibir varios ficheros mediante ftp

Post Reply
JoseLuis
Posts: 359
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo

Recibir varios ficheros mediante ftp

Post by JoseLuis »

Hola amigos
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 
Y me ocurre que sólo me baja un fichero, y además con unos bytes que no corresponden, total que es ilegible.
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
JoseLuis
Posts: 359
Joined: Thu Oct 19, 2006 12:28 pm
Location: Toledo

Post by JoseLuis »

Me ayudo a mi mismo,
Era un problema del array, que cargaba con oFtp:Directory(), no me acordaba de devuelve el nombre del fichero, y la longitud.

Saludos

Jose Luis
Post Reply