Page 1 of 1
FTP Best Options ?
Posted: Fri Mar 03, 2023 6:42 pm
by TimStone
I have been using cURL for JSON internet data transfers, and wininet.dll for file transfers. I've seen other examples here, and know the .dll interface is "older technology".
I am looking to update my interface for FTP uploads and downloads. I need to do the following:
- Upload a file
Download a file
See what files are available on the server
Delete a file on the server after downloading
I'm sure this is a familiar scenario. I would like to know what current methodologies are you using to accomplish these tasks. I am using FWH ( always latest version ), Harbour, MSVC 2020, with 32 and 64 bit builds.
Thanks for your suggestions.
Re: FTP Best Options ?
Posted: Sat Mar 04, 2023 2:16 am
by Otto
Hello Tim,
I am working on the same problem right now.
FTP should be replaced with secure FTP.
I don't have an example here yet.
For FTP I use the following function.
I wanted to change now unlike you to cURL: https:// and send with cURL.
curl --cacert /path/to/cacert.pem
https://example.com
But I get this error: SSL certificate verify result: unable to get local issuer certificate (20)
Do you send with cURL and https?
Best regards,
Otto
Code: Select all | Expand
function download()
local oInternet := TInternet():New()
local oFTP := TFTP():New( "192.168.0.230", oInternet,"remanco", "pwremanco" )
local aFiles
local handle
*----------------------------------------------------------
if ! Empty( oFTP:hFTP )
FtpSetCurrentDirectory(oFTP:hFTP, "/usr/cheshire/boh/")
aFiles = oFTP:Directory("rms.dat" )
IF len(aFiles) > 0
AEval( aFiles, { | aFile | FtpGetFile ( oFTP:hFTP, aFile[ 1 ], "c:\remanco\" + aFile[ 1 ] ,.t.,0,0,0 ) } )
ENDIF
else
// MsgAlert( "oFTP:hFTP is null" )
endif
oInternet:End()
return nil
function f_senden( cDatei )
local oInternet := TInternet():New()
local oFTP := TFTP():New( "ftp.test.info", oInternet, "salettainfo", "pwsaletta" )
local aInfo := {}
local I := 0
local cAktivInfoDir := Setup():AppPath + "report" //Setup():Daten() + "\xReport"
*----------------------------------------------------------
if Empty( oFTP:hFTP )
MsgStop( "Cannot connect to the specified FTP site!" )
return nil
endif
if ! Empty( oFTP:hFTP )
select EMPFAREP
do while .not. eof()
if FTPPUTFILE( oFTP:hFTP, cAktivInfoDir + "\"+ cDatei, "/salettainfo/AktivInfo/1" + Alltrim(EMPFAREP->email) , 0, 0 ) = .t.
else
msginfo("konnte nicht gesendet werden: " + cAktivInfoDir + "\" + cDatei + CRLF +;
"/salettainfo/AktivInfo/" + cDatei )
endif
select EMPFAREP
skip
enddo
else
MsgAlert( "oFTP:hFTP is null" )
endif
ferase ( cAktivInfoDir + "\" + cDatei)
oInternet:End()
logfile( "aktivInfo.log", { "nach senden ", } )
return nil
//----------------------------------------------------------------------------//
Re: FTP Best Options ?
Posted: Sun Mar 05, 2023 7:49 pm
by TimStone
I have reviewed the various options, and the pages Marc provided prior to making this post.
Otto, your example uses what was supposed to be the simplified tInternet class with tFTP. It works for obtaining a directory. HOWEVER, that class has no UPLOAD or DOWNLOAD methods.
SO ... I'm still hoping for more clarification or an answer to my question.
We are so dependent on the internet for conducting business that I would think this would be a priority for FiveWin.
Re: FTP Best Options ?
Posted: Sun Mar 05, 2023 9:51 pm
by Otto
Hi Tim,
Can't you use ftpgetfile and ftpputfile as shown in my example?
Just out of interest: what do you want to send.
For example, I create reports and deliver them via email.
So far, I have always sent the data with ftp to a server and from there the emails.
Now I send directly from the customer server directly.
Or using mod harbour there are a several ways to send data to the server.
Best regards,
Otto
Re: FTP Best Options ?
Posted: Sun Mar 05, 2023 9:57 pm
by TimStone
Sorry, I didn't see them in there. I did find another sample that had them and appear to have it working now.
Thanks.
Re: FTP Best Options ?
Posted: Thu Mar 09, 2023 3:03 am
by TimStone
Otto,
Is there a method to delete a file on the server ?
Re: FTP Best Options ?
Posted: Thu Mar 09, 2023 8:15 am
by Marc Venken
oConn:DropTable( "clientes" )
Just seen Otto.. This is for table inside a connectie. Otto is correct. Sorry
Re: FTP Best Options ?
Posted: Thu Mar 09, 2023 8:56 am
by Otto
Hello Tim,
I use
Code: Select all | Expand
FtpSetCurrentDirectory(oFTP:hFTP, "/meldemax")
aFiles = oFTP:Directory("*.*" )
xbrowse(aFiles)
IF len(aFiles) > 0
AEval( aFiles, { | aFile | msginfo( aFile[ 1 ] ),cFile := ALLTRIM( aFile[ 1 ] ),;
cFile := STRTRAN(UPPER(cFile),".TXT",".LTX"),;
FtpGetFile (oFTP:hFTP,aFile[ 1 ], "c:\dbf\" + aFile[ 1 ] ,.t.,0,0,0 ) ,;
oFTP:DeleteFile( aFile[ 1 ]),;
endif
Best regards,
Otto