Ok, der Fehler in der Formatanweisung liegt in der Pfadangabe.
Delphi-Quellcode:
Try
// Die Pfadangabe sollte natürlich konfigurierbar sein.
// Relative Pfade könnten auch möglich sein.
// Dann gilt aber: Relativ ausgehend von der Webserver.Exe.
sFile := Format('E:\DelphiXE8 Corner\DelphiXE8VclCorner\DelborWebserverXE8\DelborDataSnapServer\Images\%s', [Request.QueryFields.Values['Image']]);
Die %20 müssen ein Leerzeichen sein, ansonsten stört das % in der Zeichenfolge.
Wenn die Dateien unterhalb Deiner Applikation liegt, geht aus sowohl mit absoluten, als auch mit relativen Pfaden.
Wenn Du in Deinen Webseiten Urls dieser Art benutzt
http://localhost:8080/NameDeinerWebanwendung/Images?Image=Delbor_8.jpg
, dann kannst Du in Deinem Programm über
Request.QueryFields.Values
die Werte abfragen, die sich in der
Url hinter dem ? und getrennt durch & befinden.
Wenn Du also im Quelltext die
Url http://localhost:8080/NameDeinerWebanwendung/Images?Image=Delbor_8.jpg
hast, so musst Du im Quelltext bei der
WebModule1WebActImagesAction
nur
Request.QueryFields.Values['WertVorDemGleichheitszeichen']
abfragen und bekommst den Wertes hinter dem Gleichheitszeichen geliefert, hier im Beispiel also für Image den Wert Delbor_8.jpg, und dieser Wert wird oben in der Formatanweisung in den Pfad zu den Dateien eingefügt.
Funktioniert im Prinzip wie bei Ini-Dateien ...
Damit musst Du nicht mehr in einer endlosen If-Kaskade für jedes Bild eine extra Abfrage mache.
Die folgende Routine sollte also für alle JPeg-Dateien funktionieren, die über eine
Url der Form
http://localhost:8080/NameDeinerWebanwendung/Images?Image=irgendeindateiname.Endung
vom Browser bei Deinem Programm angefordert werden.
Delphi-Quellcode:
// PathInfo: /Images
procedure TWebModule1.WebModule1WebActImagesAction(Sender: TObject; Request: TWebRequest; Response: TWebResponse;
var Handled: Boolean);
Var
fs : tFileStream;
sFile :
String;
begin
Try
// Die Pfadangabe sollte natürlich konfigurierbar sein.
// Relative Pfade könnten auch möglich sein.
// Dann gilt aber: Relativ ausgehend von der Webserver.Exe.
sFile := Format('
E:\DelphiXE8 Corner\DelphiXE8VclCorner\DelborWebserverXE8\DelborDataSnapServer\Images\%s', [Request.QueryFields.Values['
Image']]);
fs := tFileStream.Create(sFile,fmOpenRead);
Try
Response.ContentType := '
image/jpeg';
Response.SendStream(fs);
Response.SendResponse;
Except
On e :
Exception Do Response.Content := '
<HTML><BODY>' + e.
Message + '
</BODY></HTML>';
End;
Finally
fs.Free;
End;
Handled := True;
end;