FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Recibir varios ficheros mediante ftp
Posts: 428
Joined: Thu Oct 19, 2006 12:28 PM

Recibir varios ficheros mediante ftp

Posted: Wed Jan 17, 2007 12:12 AM
Hola amigos
Quiero utilizar ésta función para bajarme ficheros via ftp
#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
--------------------------

Saludos



Jose Luis
Posts: 428
Joined: Thu Oct 19, 2006 12:28 PM

Recibir varios ficheros mediante ftp

Posted: Wed Jan 17, 2007 06:37 PM

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

--------------------------

Saludos



Jose Luis

Continue the discussion