Ftp con Visual Fox

Andres
24 de Marzo del 2004
Hola
Alguien tiene algun ejemplo o me puede decir como mandar y recibir archivos por internet a traves de comandos FTP, hasta ahora lo venia usando directamente con el ftp de Dos, pero me gustaria poder manejarlo sin llamadas a Dos y poder hacer verificaciones de si se encontro el Servidor y otras validaciones que se puedan hacer.
Desde ya, muchas gracias.

nmb
24 de Marzo del 2004
No tengo idea pero si descubriste como hacerlo, mandamelo please.

juanra
24 de Marzo del 2004
#DEFINE INTERNET_INVALID_PORT_NUMBER 0
#DEFINE INTERNET_OPEN_TYPE_DIRECT 1
#DEFINE INTERNET_SERVICE_FTP 1
#DEFINE FTP_TRANSFER_TYPE_ASCII 1
#DEFINE FTP_TRANSFER_TYPE_BINARY 2

PUBLIC hOpen, hFtpSession
DO decl

IF connect2ftp ("direccion ip", "usuario", "clave")

dato ="fichero a enviar"
lcSource = dato
lcTarget = "carpeta del servidor donde lo dejas/" + dato

IF FtpPutFile (hFtpSession, lcSource,;
lcTarget, FTP_TRANSFER_TYPE_BINARY, 0) = 1
ENDIF
endif

= InternetCloseHandle (hFtpSession)
= InternetCloseHandle (hOpen)
ENDIF
RETURN
**************************************************************************
PROCEDURE decl
DECLARE INTEGER InternetOpen IN wininet.dll;
STRING sAgent,;
INTEGER lAccessType,;
STRING sProxyName,;
STRING sProxyBypass,;
STRING lFlags

DECLARE INTEGER InternetCloseHandle IN wininet.dll INTEGER hInet

DECLARE INTEGER InternetConnect IN wininet.dll;
INTEGER hInternetSession,;
STRING sServerName,;
INTEGER nServerPort,;
STRING sUsername,;
STRING sPassword,;
INTEGER lService,;
INTEGER lFlags,;
INTEGER lContext

DECLARE INTEGER FtpPutFile IN wininet.dll;
INTEGER hConnect,;
STRING lpszLocalFile,;
STRING lpszNewRemoteFile,;
INTEGER dwFlags,;
INTEGER dwContext

DECLARE INTEGER FtpRenameFile IN wininet.dll;
INTEGER hConnect,;
STRING lpszExisting,;
STRING lpszNew

RETURN
***************************************************************************
FUNCTION connect2ftp (strHost, strUser, strPwd)
* open access to Inet functions
hOpen = InternetOpen ("vfp", INTERNET_OPEN_TYPE_DIRECT, 0, 0, 0)

IF hOpen = 0
? "Unable to get access to WinInet.Dll"
RETURN .F.
ENDIF

* connect to FTP
hFtpSession = InternetConnect (hOpen, strHost, INTERNET_INVALID_PORT_NUMBER,;
strUser, strPwd, INTERNET_SERVICE_FTP, 0, 0)

IF hFtpSession = 0
* close access to Inet functions and exit
= InternetCloseHandle (hOpen)
? "FTP " + strHost + " is not available"
RETURN .F.
ELSE
? "Connected to " + strHost + " as: [" + strUser + ", *****]"
ENDIF
RETURN .T.

***************************************************************************************************************
************************APERTURA DE LAS PAGINAS WEB DE ACTUALIZACION*****************
***************************************************************************************************************
PROCEDURE OpenHREF
LPARAMETER cHREF
#DEFINE SW_HIDE 0
#DEFINE SW_SHOWNORMAL 1
#DEFINE SW_NORMAL 1
#DEFINE SW_SHOWMINIMIZED 2
#DEFINE SW_SHOWMAXIMIZED 3
#DEFINE SW_MAXIMIZE 3
#DEFINE SW_SHOWNOACTIVATE 4
#DEFINE SW_SHOW 5
#DEFINE SW_MINIMIZE 6
#DEFINE SW_SHOWMINNOACTIVE 7
#DEFINE SW_SHOWNA 8
#DEFINE SW_RESTORE 9
#DEFINE SW_SHOWDEFAULT 10
DECLARE LONG ShellExecute ;
IN "shell32.dll" ;
LONG hwnd, ;
STRING lpOperation, ;
STRING lpFile, ;
STRING lpParameters, ;
STRING lpDirectory, ;
LONG nShowCmd
IF 32 => ShellExecute( 0, NULL, ;
cHREF, NULL, ;
NULL, SW_MAXIMIZE )
ERROR "Error en ShellExecute."
ENDIF

juanra
24 de Marzo del 2004
sobra el modulo de apertura de la web.

Espero que os sirva