Ftp con Visual Fox
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.
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.
#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
#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
