Page 1 of 1

ftp con fivewin

Posted: Sun Jan 08, 2006 11:23 pm
by Paco Garcia
Hola.
¿Como se puede manejar FTP desde FiveWin?
Gracias

Posted: Mon Jan 09, 2006 5:16 am
by R.F.
Si, FiveWin tiene una clase llamada QFTP, que te permite hacer FTP con FW, sin embargo no se que pasa con los sockets de FW que cuando utilizas esta clase con ficheros grandes no los copia completos.

(x)Harbour tiene la TIP.LIB que funciona mejor que los sockets de FW para transferencia de archvios, o bueno, por lo menos si copia ficheros grandes sin problemas.

personlamente yo utilizo el componente FTP de Funcky 6.0 funciona como un sueño.

Posted: Mon Jan 09, 2006 10:19 pm
by Vikthor
Mi estimado Paco :

Puede usar la clase QFtp con las modificaciones que le hizo Luis Krause, la clase funciona muy bien, tanto para subir, como para bajar archivos.

Posted: Tue Apr 25, 2006 3:11 pm
by George
Rene

Podrias decirnos como se usa Funcky con FWH para la transferencia de archivos via FTP, un ejemplo de codigo seria muy util :)

He tratado de usarlo, siguiendo el ejemplo que viene en Funcky pero consigo un error cuando trato de leer el archivo para download o upload

Error:Description:Error/Funcky6
DISP_E_UNKNOWNAME:BACKUP.RES

"BACKUP.RES" es el archivo que deseo transferir. He verificado que esta en el directorio indicado. No se porque dice que es desconocido

Saludos


George

Clase QFtp

Posted: Wed Apr 26, 2006 1:36 am
by jose_murugosa
Vikthor wrote:Mi estimado Paco :

Puede usar la clase QFtp con las modificaciones que le hizo Luis Krause, la clase funciona muy bien, tanto para subir, como para bajar archivos.

Vikthor:

1. De dónde se puede bajar esta clase

2. Se que tienes clases "con costo", me interesaría que me mandaras e-mail sobre ChartFX y otras que pudieras tener y precios.

Posted: Wed Apr 26, 2006 4:20 pm
by R.F.
George wrote:Rene

Podrias decirnos como se usa Funcky con FWH para la transferencia de archivos via FTP, un ejemplo de codigo seria muy util :)
Yo lo hago asi:

Code: Select all

oFtp := TOleAuto():New("Funckyftp")
oFtp:Connect("ftp.google.d2g.com","usuario","password")
oFtp:ChangeDir ("\downloads\ads")
oFtp:Get("adsdemo.exe", "c:\adsdemo.exe",0) 
oFtp:Disconnect()

Posted: Wed Aug 30, 2006 7:56 pm
by George
Rene,

No he logrado poner a trabajar ninguno de los ejemplos que tu has posteado de Funcky.

He tratado de multiple formas pero solo consigo errores.

Sera que necesito algunos wrappers, o quizas algun archivo ".ch"

Estoy usando la version de evaluacion funcky60 y tan pronto pueda ponerla a trabajar voy a comprarla, pues me interesna las conexiones ftp y los envios de email, que tu indicas "van de perlas" con funcky.

Saludos


George

Posted: Wed Aug 30, 2006 11:46 pm
by R.F.
George wrote:Rene,

No he logrado poner a trabajar ninguno de los ejemplos que tu has posteado de Funcky.

He tratado de multiple formas pero solo consigo errores.

Sera que necesito algunos wrappers, o quizas algun archivo ".ch"

Estoy usando la version de evaluacion funcky60 y tan pronto pueda ponerla a trabajar voy a comprarla, pues me interesna las conexiones ftp y los envios de email, que tu indicas "van de perlas" con funcky.

Saludos


George
George, hay un problema conocido y reportado con la clase TOLEAuto, te explico que pasa y como solucionarlo, como me lo explico Jose -:

La clase TOleAuto() tiene 3 metodos que pueden causar problemas con cualquier componente OLE que tenga metodos con nombres similares, que son ::Get() ::Set() ::Invoque(), lo que provoca que al construir tu objeto Ole, si este tiene entre sus propiedades metodos con nombres similares, falle.

En el caso de Funcky, tienes un metodo GET, que invariaablemente va a chocar contra el meotodo GET te ToleAuto, asi que la solucion es hacer la llamada como sigue:

Code: Select all

oFtp := TOleAuto():New("Funckyftp")
oFtp:Connect("ftp.google.d2g.com","usuario","password")
oFtp:ChangeDir ("\downloads\ads")

/* aqui es donde puede surgir el problema erroneamente la forma de
* llamar al metodo seria:
* oFtp:Get("adsdemo.exe", "c:\adsdemo.exe",0)
*
* Sin embargo el metodo GET de funcky entra en conflicto con el metodo 
* GET de TOleAuto para solucionarlo hacemos:
*/

oFTP:Get( "Get", "adsdemo.exe","c;\adsdemo.exe",0)

/* tambien es valido hacer:
oFtp:Invoque("Get", "adsdemo.exe","C:\adsdemo.exe",0) */

oFtp:Disconnect()
Gracias José -, pude haberme vuelto loco buscando la solucion, pero el me soluciono el problema.

Posted: Thu Aug 31, 2006 12:47 am
by George
Rene,

Parece que el problema que tengo es con la version de evaluacion de Funcky. No me funciona nada que tenga que ver con funcky, ni siquiera el ejemplo compilado tuyo FunckyDemo.exe

Con el codigo de tu post anterior anterior sigo consiguiendo el mismo error

Code: Select all

Error occurred at: 08/30/2006, 20:40:35
   Error description: Error TOleAuto/-1  Unknown error: TOLEAUTO:NEW
   Args:
     [   1] = C   FunckyFtp

Stack Calls
===========
   Called from:  => THROW(0)
   Called from: win32ole.prg => TOLEAUTO:NEW(319)
   Called from: MAIN.PRG => TESTFUNCKY(1095)
   Called from: MAIN.PRG => (b)FRAMEBAR(344)
Mis herramientas son xBuilder Pro (xHarbour 0.99.61) + FWH Aug_08

Buscare otras alternativas para el envio de email y manejo de FTP

Gracias por todo Rene

Saludos

George

FTP

Posted: Tue Jul 10, 2007 10:19 pm
by omarelunico
Esto me funciona siempre bien.
Pruebalo


#include "fivewin.ch"
static cServer//:="204.233.245.140",
static odlg,ownd
static cDirIp1,cNomZipLo1,CNomZipRe1,cDirRemot1,cUser1,cPasswd1
function main()
set date to british
SET CENTURY ON
dbcloseall()
use tablaftp exclusive new
TablaFtp->(dbgotop())
cDirIP1:=alltrim(TablaFtp->DirIp)//Direccion IP
cDirLocal1:=alltrim(TablaFtp->DirLocal)//Direccion Local
cDirRemot1:=alltrim(TablaFtp->DirRemot)//Direccion Remota
cNomZipLo1:=alltrim(TablaFtp->NomZipLo)//Nombre Zip Local
cNomZipRe1:=alltrim(TablaFtp->NomZipRe)//Nombre Zip Remoto
cUser1:=alltrim(TablaFtp->User)//Usuario
CPasswd1:=alltrim(TablaFtp->Passwd)//Contraseña
lchdir(cdirlocal1)
dbcloseall()
FtpEnvio()
return nil

Function FtpEnvio()
local cuser,cpass,cremote,clocal,cfecha
cserver:=cdirip1//direccion IP del Server FTP
cuser:=cuser1//"usuario"
cpass:=cpasswd1//"contraseña"
cremote:=cdirremot1 // "directorio/publico/" directorio dentro del ftp
cnombre:=dtoc(date())//nombre del archivo
lchdir("envioftp") //ingreso a un directorio dentro de windows
//cremote=cremote+"/"+"prueba4"+".zip"
cfecha:=substr(dtoc(date()),7,4)+substr(dtoc(date()),4,2)+substr(dtoc(date()),1,2)
clocal:=cfecha+cNomZipLo1
if file(clocal)
ftpsend(cserver,cdirremot1,cuser,cpass,clocal)
endif
lchdir("..")
return nil

FUNCTION FtpSend(cFTPServer,cFTPDir,cFTPUser,cFTPPwd,cFile)
//--------------------------------------------------------//
LOCAL oFtp, oInt, hMon, lRet
if !Empty(cFTPDir) .AND. !Right(cFTPDir,1)=="/"
cFTPDir := cFTPDir+"/"
end
FtpInit(@oInt,@oFtp,cFTPServer,cFTPUser,cFTPPwd)
//hMon := fCreate("info.txt")
hmon:="ftp.txt"
if oFtp:hFtp > 0
SendFile(cFTPDir,cFile,oFtp,hMon,oInt)
else
//msginfo("HAY PROBLEMAS EN SU CONEXIÒN A INTERNET, DATOS NO PUDIERON SER ENVIADOS","IMPORTANTE")
end
oInt:End()
oFtp:end()
RETUrn NIL

FUNCTION FtpInit(oInt,oFtp,cFTPServer,cFTPUser,cFTPPwd)
//--------------------------------------------------------//
oInt := tInternet():New()
oFtp := TFtp():New(cFTPServer, oInt, cFTPUser,cFTPPwd)
RETU NIL

STATIC FUNCTION SendFile(cFTPDir,cFile,oFtp,hMon,oInt)
//--------------------------------------------------------//
LOCAL oFile, h, cBuff, nSize, nRead, nWrite
LOCAL lRet := .F.
oFile := TFtpFile():New(cFTPDir+cFile,oFtp)
oFile:OpenWrite()
if oFile:hFile > 0
h := fOpen(cFile)
nSize := fSeek(h,0,2)
fSeek(h,0,0)
cBuff := Space(nSize)
nRead := fRead(h,@cBuff,nSize)
fClose(h)
nWrite:= oFile:Write( cBuff )
If nWrite==nRead
lRet := .T.
//msginfo("DATOS FUERON ENVIADOS CORRECTAMENTE","INFORMACIÒN")
Else
//Msginfo("NO SE PUDO ENVIAR, ARCHIVO ESTÀ ABIERTO POR OTRO PROCESO, REVISELO","IMPORTANTE")
oInt:end()
oFtp:end()
End
else
//Msginfo("HAY PROBLEMAS EN ABRIR EL ARCHIVO PARA SER ENVIADO","IMPORTANTE")
oInt:end()
oFtp:end()
endif
RETURN lRet

ftp

Posted: Tue Jul 10, 2007 10:22 pm
by omarelunico
El ejemplo que puse soporta archivos grandes, yo probe con archivos de 5MB y sin problemas.