>* For publishing all the files in cFromFolder using FTP >LOCAL cPwd, cFileName, cUid, cServer, cFtpFolder, cFromFolder >LOCAL lFailed, i, cError >LOCAL lsFileFind >lFailed = .f. >cError = "" >* NOTE: modify next five lines as appropriate >cUid = "<<the FTP user id>>" >cServer = "<<the FTP url>>" >cPwd = "<<the password>>" >cFtpFolder = "<<the folder to publish to>>" >cFromFolder= "<<the folder that contains the files to be published>>" > >#DEFINE INTERNET_INVALID_PORT_NUMBER 0 >#DEFINE INTERNET_SERVICE_FTP 1 >#DEFINE INTERNET_FLAG_PASSIVE 0x08000000 >#DEFINE INTERNET_FLAG_ACTIVE 0 >#DEFINE INTERNET_OPEN_TYPE_DIRECT 1 >#DEFINE FTP_TRANSFER_TYPE_ASCII 1 >#DEFINE FTP_TRANSFER_TYPE_BINARY 2 > >DECLARE INTEGER InternetConnect IN wininet; > INTEGER hInternetSession,; > STRING sServerName,; > INTEGER nServerPort,; > STRING sUsername,; > STRING sPassword,; > INTEGER lService,; > INTEGER lFlags,; > INTEGER lContext > >DECLARE INTEGER InternetOpen IN wininet; > STRING sAgent, INTEGER lAccessType,; > STRING sProxyName, STRING sProxyBypass,; > INTEGER lFlags > >DECLARE INTEGER FtpSetCurrentDirectory IN wininet; > INTEGER hConnect,; > STRING @lpszDirectory > >DECLARE INTEGER FtpCreateDirectory IN wininet; > INTEGER hConnect,; > STRING lpszDirectory > >DECLARE INTEGER FtpDeleteFile ; > IN WinInet.dll ; > INTEGER hFTPSession,; > STRING cFileName > >DECLARE INTEGER FtpFindFirstFile ; > IN WININET.DLL ; > INTEGER hFTPSession,; > STRING cFileSpec,; > STRING @sFileFind,; > INTEGER nFlags,; > INTEGER nContext > >DECLARE INTEGER InternetFindNextFile ; > IN WinInet.DLL ; > INTEGER hFindHandle,; > STRING @lsFileFind > >DECLARE INTEGER FtpPutFile IN wininet; > INTEGER hConnect,; > STRING lpszLocalFile,; > STRING lpszNewRemoteFile,; > INTEGER dwFlags,; > INTEGER dwContext > >DECLARE INTEGER InternetOpenUrl IN wininet; > INTEGER hInternet,; > STRING lpszUrl,; > STRING lpszHeaders,; > INTEGER dwHeadersLength,; > INTEGER dwFlags,; > INTEGER dwContext > >DECLARE INTEGER InternetCloseHandle IN wininet INTEGER hInet > >WAIT " Publishing... " WINDOW AT SROWS()/2-1, (SCOLS()/2)-50 NOWAIT > >hInternet = InternetOpen("FoxFtp", INTERNET_OPEN_TYPE_DIRECT, CHR(0), CHR(0), 0) >IF ISNULL(hInternet) && this may never happen. Seems to always work, even with no physical connection > lFailed = .t. > cError = "access the internet" >ELSE > hConnection = InternetConnect(m.hInternet, cServer, ; > INTERNET_INVALID_PORT_NUMBER, ; > cUid, cPwd, INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0) > IF hConnection = 0 > lFailed = .t. > cError = "connect" > ELSE > FtpSetCurrentDirectory(m.hConnection, @cFtpFolder) > ADIR(aFiles,cFromFolder+"\*.*","",1) > FOR m.i = 1 TO ALEN(aFiles,1) > WAIT " Publishing "+STR(m.i,3,0)+" of "+STR(ALEN(aFiles,1),3,0) WINDOW AT SROWS()/2-1, (SCOLS()/2)-50 NOWAIT > IF FtpPutFile(m.hConnection, cFromFolder+"\" + aFiles(m.i,1), ; > aFiles(m.i,1), ; > FTP_TRANSFER_TYPE_BINARY, 0) = 0 > lFailed = .t. > cError = "Publish "+ aFiles(m.i,1) > EXIT > ENDIF > ENDFOR > ENDIF >ENDIF > >IF VARTYPE(hInternet)="N" > InternetCloseHandle(m.hInternet) >ENDIF > >#UNDEFINE INTERNET_INVALID_PORT_NUMBER 0 >#UNDEFINE INTERNET_SERVICE_FTP 1 >#UNDEFINE INTERNET_FLAG_PASSIVE 0x08000000 >#UNDEFINE INTERNET_FLAG_ACTIVE 0 >#UNDEFINE INTERNET_OPEN_TYPE_DIRECT 1 >#UNDEFINE FTP_TRANSFER_TYPE_ASCII 1 >#UNDEFINE FTP_TRANSFER_TYPE_BINARY 2 > >WAIT CLEAR > >IF lFailed > MESSAGEBOX("The server did not respond. Please try again in a few minutes.",16,"Unable to " + cError + ".") > RETURN .f. >ELSE > RETURN .t. >ENDIF >