PROBLEMAS CON FTP

Post Reply
infosys
Posts: 57
Joined: Tue Jan 31, 2006 1:32 pm

PROBLEMAS CON FTP

Post by infosys »

Estimados amigos, he tratado infructuosamente de crear una aplicacion que suba archivos y baje archivos de un sitio FTP, he utilizado la clase QFTP. Bajarlos me es imposible, lee el directorio del FTP y los archivos, pero cuando comienzo la descarga de cada uno, tambien queda como en un LOOP.

Hay alguna otra clase de Harbour o Fivewin para realizar este proceso ??


Gracias
User avatar
mag071
Posts: 139
Joined: Thu Feb 02, 2006 12:09 pm
Location: Venezuela
Contact:

Post by mag071 »

Yo he usado con exito la clase tFtp partiendo de un ejemplo que esta en FWH

\FWH\SAMPLES\GALLERY\ICOPYFIL

Verifica ese directorio
Mario Antonio González Osal
Venezuela
m a g 0 7 1 @ g m a i l. c o m
infosys
Posts: 57
Joined: Tue Jan 31, 2006 1:32 pm

Post by infosys »

Gracias Mario, no lo habia visto, lo probare.
User avatar
AngelSalom
Posts: 664
Joined: Fri Oct 07, 2005 7:38 am
Location: Vinaros (Castellón ) - España
Contact:

Post by AngelSalom »

Con las clases nativas de FWH funciona muy bien.

/* ==========================================================================================
Func_Ftp
--------

Funciones para el manejo de FTP
Revisión : 04/04/2006 19:27
Revisado por : Angel
==========================================================================================
*/

#include "fivewin.ch"

Function Main()
Local oInternet, oFtp, cServFtp:="server",cUserFTp:="user",cPassFtp:="pass"

oInternet := TInternet():New()
oFTP := TFTP():New( Alltrim(cServFtp), oInternet, Alltrim(cUserFtp),Alltrim(cPassFtp) )

If ! Empty( oFTP:hFTP )
FtpSendFiles ({"file1.txt","file2.txt","file3.txt"},{"destfile1.txt","destfile2.txt","destfile3.txt"},oFtp)

Endif
oInternet:End()

Return (nil)

Function FTPSendFiles ( aSource, aTarget, oFTP )
Local nBufSize:=4096
local n
local hSource
local cBuffer := Space( nBufSize )
local nBytes, nFile := 0, nTotal := 0
local nTotSize := 0
local oFile


for n = 1 to Len( aSource )
if ! File( aSource[ n ] )
MsgStop( "Fichero no encontrado: " + aSource[ n ] )
exit
endif
hSource = FOpen( aSource[ n ] )
nTotSize += FSeek( hSource, 0, 2 )
FClose( hSource )
SysRefresh()
next

for n = 1 to Len( aSource )
hSource = FOpen( aSource[ n ] )

oFile = TFtpFile():New( aTarget[ n ], oFTP )
oFile:OpenWrite()

FSeek( hSource, 0, 0 )
nFile := 0
SysRefresh()
while ( nBytes := FRead( hSource, @cBuffer, nBufSize ) ) > 0
oFile:Write( SubStr( cBuffer, 1, nBytes ) )
SysRefresh()
end
FClose( hSource )
oFile:End()
next
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
local oFile, aFiles, aSizes := {}

for n = 1 to Len( aSource )
aFiles = oFTP:Directory( aSource[ 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 ] )

oFile = TFtpFile():New( aSource[ n ], oFTP )
oFile:OpenRead()


SysRefresh()
while ( nBytes := Len( cBuffer := oFile:Read( nBufSize ) ) ) > 0
FWrite( hTarget, cBuffer, nBytes )
If oSay<>NIL
oSay:SetText ("- Recibiendo :"+Str(nFile+=nBytes)+" de "+Str(nTotSize))
Endif
SysRefresh()
end
FClose( hTarget )
oFile:End()
next

return nil

No deberias tener problemas.
Angel Salom
http://www.visionwin.com
---------------------------------------------
fwh 19.05 - harbour 3.2 - bcc 7.0
User avatar
txon
Posts: 38
Joined: Thu Oct 13, 2005 9:38 am
Location: Santurce / Vizcaya / España
Contact:

Porblemas FTP

Post by txon »

Angel:

He probado el codigo que pones en el post, y me genera el siguiente error

Cannot Load WinINet.dll

He comprobado esta libreria y se encuentra tanto en: \WINDOWS\SYSTEM, como en \WINDOWS\SYSTEM32

¿Sabes que sucede?

Gracias de antemano
Un saludo
Alfonso Larrinaga
info@bsinformatica.net
infosys
Posts: 57
Joined: Tue Jan 31, 2006 1:32 pm

Post by infosys »

Gracias por las Recomendaciones, efectivamente use la clase TFTP y me resulta excelente, pude resolver mi problema

Gracias a todos por la ayuda
User avatar
fullpaint
Posts: 9
Joined: Tue May 23, 2006 10:05 pm
Contact:

Post by fullpaint »

Yo estoy usando tFTP pero encontre problemas con versiones mas nuevas de FWH o xHarbour no pude identificar quien ocaciona el problema.
Asi que todo lo que consierne a tFTP utilizo las versiones:

C:\eduardo\fwh\ftp>make.exe -fmakex.dat
MAKE Version 5.2 Copyright 1987, 2000 Borland
c:\xHarfw24\bin\harbour.exe -p -n -m -es2 -gc0 -i.;c:\fw24h\include;c:\x
Harfw24\include -d__HARBOUR__ -dSYSTEMA .\SendFtp.prg -o.\SendFtp.c
xHarbour Compiler build 0.73.0 (SimpLex)
Copyright 1999-2002, http://www.xharbour.org http://www.harbour-project.org/
Compiling '.\SendFtp.prg' and generating preprocessed output to '.\SendFtp.ppo'.
..
Lines 752, Functions/Procedures 27
Generating C source output to '.\SendFtp.c'... Done.
c:\bcc55\bin\bcc32.exe -c -O2 -Ic:\xHarfw24\include;c:\bcc55\include -oo
bj\SendFtp.obj .\SendFtp.c
Borland C++ 5.5.1 for Win32 Copyright 1993, 2000 Borland
.\SendFtp.c:
c:\bcc55\bin\ilink32.exe -Gn -aa -Tpe -s

Espero te sea util
Eduardo Rizzolo

Eldorado Misiones Argentina
fullpaint@pinturas-misioneras.com.ar
Secundario:fullpaint@gmail.com
Grupo PuertoSUR
Telegram.@Fullpaint
Post Reply