Die Allzweckwaffe ist
Curl. Das Programm
curl.exe ist Bestandteil aktueller Windows Versionen. Links:
GitHub,
Download,
Manual,
libcurl C API und
libcurl C Beispiele. Zum schnellen Einstieg schreibst du mit Hilfe der Beispiele aus dem Manual einfache Batch-Dateien zum Testen deiner Fälle. Wenn alles wie gewünscht funktioniert, lade das benötigte
Package aus dem Download und lege die
libcurl.dll in dein Programmverzeichnis. Eine Kapselung für diese
DLL findest du in der
mORMot Unit mormot.lib.curl. Die mORMot Bibliothek muss nicht installiert werden. Den aktuellen Commit und die
static binaries aus dem letzten Tag herunterladen. In Delphi die entsprechenden Bibliotheks- und Suchpfade setzen. Beim Erstellen hilft dieses Muster:
Code:
// Die Doppelpunkte einfach durch den Speicherpfad ersetzten
..\src;..\src\app;..\src\core;..\src\crypt;..\src\
db;..\src\lib;..\src\misc;..\src\net;..\src\orm;..\src\rest;..\src\script;..\src\soa;..\src\tools\ecc;..\src\ui;
Für viele Anwendungsfälle findest du eine Vorlage in den
libcurl C Beispielen. Das folgende Delphi Beispiel zeigt die Umsetzung für einen
FTP/SFTP Download:
Delphi-Quellcode:
uses
mormot.core.base,
mormot.core.text,
mormot.core.os,
mormot.lib.curl;
var
hnd: TCurl;
url: RawUtf8;
res: TCurlResult;
buffer: RawByteString;
begin
if not CurlIsAvailable
then Exit;
//=>
hnd := curl.easy_init;
if hnd <>
Nil then
begin
// Schema: sftp://user:password@server/file.txt
url := '
ftp.halifax.rwth-aachen.de/debian/README.html';
// https://curl.se/libcurl/c/sftpget.html
curl.easy_setopt(hnd, coURL, Pointer(
url));
curl.easy_setopt(hnd, coWriteFunction, @CurlWriteRawByteString);
curl.easy_setopt(hnd, coWriteData, @buffer);
res := curl.easy_perform(hnd);
if res = crOk
then
begin
FileFromString(buffer, MakePath([Executable.ProgramFilePath, '
file.txt']));
ShowMessage('
Download completed');
end
else
ShowMessage(Format('
Curl told us %d (%s)', [Ord(res), curl.easy_strerror(res)]));
curl.easy_cleanup(hnd);
end;
end;
Disclaimer: Ungetestet!
Ein Beispiel zum Studieren ist auch die Klasse TCurlHttp aus der
Unit mormot.net.client.
Bis bald...
Thomas