Einzelnen Beitrag anzeigen

nahpets
(Gast)

n/a Beiträge
 
#50

AW: Webbroker. PageProducer und transparente HTML-Tags

  Alt 4. Jul 2016, 18:16
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;
  Mit Zitat antworten Zitat