Der von Phoenix beschriebene Aufwand entspricht meiner Erfahrung nach nicht der Realität.
Man muss keine HTTP-Spezifikation durchimplementieren, ... (das ist in den
INDY-Komponenten alles schon enthalten).
Zitat von
Phoenix:
Das Beispiel mit dem vollständigen Webserver (inkl. CSS, JS, Bildern, Videos, Binärformaten etc.) ist in modernem .NET 7 vermutlich irgendwas zwischen 3 und 5 Zeilen.
In meinem obigen Beispiel sind's halt keine 3 bis 5 Zeilen, sondern 13.
Man könnte es auch noch verkürzen:
Delphi-Quellcode:
sFilename := Format('
%s%s',['
htdocs',ARequestinfo.Document]);
if not FileExists(sFilename)
then sFilename := '
htdocs/index.html';
Stream := TFileStream.Create(sFilename, fmOpenRead
or fmShareDenyWrite);
// Hier muss man noch den ContentType abhängig von dem Dateityp, setzen.
AResponseinfo.ContentType := '
text/html';
AResponseinfo.ContentStream := Stream;
Delphi-Quellcode:
procedure TForm1.ServerCommandGet(AContext: TIdContext;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var
Stream : TFileStream;
Filename :
String;
begin
Filename := Format('
%s%s',['
htdocs',ARequestinfo.Document]);
if not FileExists(sFilename)
then Filename := '
htdocs/index.html';
Stream := TFileStream.Create(sFilename, fmOpenRead
or fmShareDenyWrite);
// Hier muss man noch den ContentType abhängig vom Dateityp, setzen.
AResponseinfo.ContentType := '
text/html';
AResponseinfo.ContentStream := Stream;
AResponseinfo.ContentLength := Stream.Size;
end;
Und damit haben wir dann auch in Delphi 'nen 14-Zeiler
Mehr ist für
Zitat von
Phoenix:
Das Beispiel mit dem vollständigen Webserver (inkl. CSS, JS, Bildern, Videos, Binärformaten etc.)
nicht erforderlich.