Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi IdHTTPServer - Wo liegen Bilder für Webseiten? (https://www.delphipraxis.net/116710-idhttpserver-wo-liegen-bilder-fuer-webseiten.html)

moelski 4. Jul 2008 19:48


IdHTTPServer - Wo liegen Bilder für Webseiten?
 
Moin !

Kann mir mal jemand erklären wo ich die Bilder hinlegen muss und wie ich die auf einer Webseite einbinde, damit ich sie im Browser sehe?

Ich habe es jetzt so gemacht:
Delphi-Quellcode:
  '

[img]file:///mychart.jpg[/img]</p>'
Das Bild liegt dann auf c:\ . Aber das kanns ja irgendwie nich sein. Ich habe schon alles erdenkliche probiert, aber ich komme nicht weiter. Hat der Webserver ein Arbeitsverzeichnis? Kann ich das irgendwie abfragen wenn es das gibt?
Und wie ist dann die genaue Notation für Bilder?

Denn wenn ich den Webserver vom Internet her anspreche sehe ich das Bild nicht wenn ich die obige Methode nutze. Das Bild sehe ich nur im lokalen LAN.

Dax 4. Jul 2008 20:11

Re: IdHTTPServer - Wo liegen Bilder für Webseiten?
 
Alle URLs, die auf das file-Protokoll lauten, zeigen auf den aktuellen Rechner - nicht auf irgendeinen Server.

moelski 4. Jul 2008 20:14

Re: IdHTTPServer - Wo liegen Bilder für Webseiten?
 
Moin !

Sowas hab ich mir fast gedacht. Und wie muss ich das angeben das ich auf von extern / Internet das Bild sehe ?

moelski 4. Jul 2008 21:49

Re: IdHTTPServer - Wo liegen Bilder für Webseiten?
 
Ich krisch Plaque :pale:

Versuche jetzt schon seit ner geraumen Zeit rauszubekommen wo ich denn die Bilder ablegen muss wenn sie eine Webseite mit anzeigen soll.
Mir gehen die Ideen aus. Die Suche nach IdHTTPServer und DocumentRoot hat mich nicht weiter gebracht. Auch die Suche nach Bilder / picture / pic / IMG ... Überall nur :?:

Warum hat das Control nicht einfach einen Parameter "DocumentRoot" ? :gruebel:

Ich hoffe da hat noch jemand nen Tip. Im Moment bin ich am verzweifeln :coder2:

Lee500 4. Jul 2008 22:28

Re: IdHTTPServer - Wo liegen Bilder für Webseiten?
 
Hi moelski,

Versuchs doch einfach mal mit '

[img]mychart.jpg[/img]</p>', wenn du mychart.jpg im gleichen Ordner hast.

Gruß Lee500

Luckie 4. Jul 2008 22:54

Re: IdHTTPServer - Wo liegen Bilder für Webseiten?
 
Absoluter Pfad von deinem Rootverzeichnis aus
Code:
/image/bild.jpg
oder relativer Pfad von deinem aktuellen Verzeichnis aus:
Code:
images/bild.jpg
Also entweder:
Code:
[img]/images/bild.jpg[/img]
oder
Code:
[img]images/bild.jpg[/img]
Erstere Variante ist übrigens vorzuziehen, falls du deine Seite mal umstrukturierst. Voraussetzung ist allerdings, dass die Bilder da bleiben, wo sie waren.

rotfc 5. Jul 2008 02:03

Re: IdHTTPServer - Wo liegen Bilder für Webseiten?
 
Zitat:

Zitat von moelski
Moin !

Kann mir mal jemand erklären wo ich die Bilder hinlegen muss und wie ich die auf einer Webseite einbinde, damit ich sie im Browser sehe?

Ich habe es jetzt so gemacht:
Delphi-Quellcode:
  '

[img]file:///mychart.jpg[/img]</p>'
Das Bild liegt dann auf c:\ . Aber das kanns ja irgendwie nich sein. Ich habe schon alles erdenkliche probiert, aber ich komme nicht weiter. Hat der Webserver ein Arbeitsverzeichnis? Kann ich das irgendwie abfragen wenn es das gibt?
Und wie ist dann die genaue Notation für Bilder?

Denn wenn ich den Webserver vom Internet her anspreche sehe ich das Bild nicht wenn ich die obige Methode nutze. Das Bild sehe ich nur im lokalen LAN.

Verwechselst Du möglicherweise einen lokalen "Webserver" und dessen Webseiten mit einem Server, der über das Internet erreichbar ist/sein soll?

Wundere mich ja nur :drunken:

moelski 5. Jul 2008 06:41

Re: IdHTTPServer - Wo liegen Bilder für Webseiten?
 
Moin !

Also ich habe langsam alle Varianten durch.
Das Verzeichnis in dem meine Testanwendung liegt ist das hier:
C:\Documents and Settings\Dominik\Desktop\Delphi

Dort liegt die EXE. Und dort liegt auch das Bild mychart.jpg. Additiv habe ich einen Unterordner angelegt mit dem gleichen Bild - zum Testen.

Bis jetzt geht weder:
- /image/mychart.jpg
- image/mychart.jpg
- mychart.jpg

Die zugehörige Webseite schaut so:
Delphi-Quellcode:
  '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">' +
  '<html>' +
  '<head>' +
  '<title>Testwebseite</title>' +
  '</head>';
  '<body>' +
  '' +
  '<h1>Tu was !</h1>' +
  '' +
  '<form action ="Graphics" method=post>' +    //
    '<table border="0" cellpadding="5" cellspacing="0" bgcolor="#E0E0E0">' +
      '<tr>' +
        '<td align="right">Vorname:</td>' +
        '<td><input name="Vorname" type="text" size="30" maxlength="30"></td>' +
      '</tr>' +
      '<tr>' +
        '<td align="right" valign="top">Kommentar:</td>' +
        '<td><textarea name="Text" rows="10" cols="50"></textarea></td>' +
      '</tr>' +
      '<tr>' +
        '<td align="right">Formular:</td>' +
        '<td>' +
          '<input type="submit" value="Refresh" name="Refresh">' +
          '<input type="submit" value="Absenden" name="Send">' +
          '<input type="reset" value="Abbrechen" name="Cancle">' +
        '</td>' +
      '</tr>' +
    '</table>' +
  '</form>' +
  '' +
  ' Und hier nun das Bild ...
' +
  '[img]/images/mychart.jpg[/img]'+
  '</body>' +
  '</html>';
Und das ist mein CommandGet (evtl. ist da ja was falsch):
Delphi-Quellcode:
procedure TForm1.IdHTTPServer1CommandGet(AContext: TIdContext;
  ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
  //AResponseInfo.ContentText := 'Hello World. It is ' + TimeToStr(Time);

Var TheFile:TMemoryStream;
    FN:String;
begin
  If ARequestInfo.Document='/' Then begin
    With AResponseInfo do begin
      ContentText := HtmlForm;
      WriteContent;
    end;
  end else if ARequestInfo.Document = '/Graphics' then begin
    Memo1.Lines.Add(ARequestInfo.FormParams);
    Chart1.SubTitle.Caption := ARequestInfo.FormParams;
    if Pos('Refresh', ARequestInfo.FormParams) > 0 then
      PaintChart;
    AResponseInfo.ContentText := HtmlForm;
    AResponseInfo.WriteContent;
  end;
end;
Zitat:

von deinem Rootverzeichnis aus
Wo genau ist denn das Rootverzeichnis? Ichhabe noch keine Möglichkeit gefunden es auszulesen, geschweige denn zu setzen :gruebel:

moelski 5. Jul 2008 08:39

Re: IdHTTPServer - Wo liegen Bilder für Webseiten?
 
Moin !

Ich habs nun hinbekommen.
Habe auch ne Vermutung woran es liegen könnte. Weiss aber nicht obs stimmt.

Bis jetzt habe ich immer das hier genutzt um die Webseite anzuzeigen:
Delphi-Quellcode:
    AResponseInfo.ContentText := HtmlForm;
    AResponseInfo.WriteContent;
HtmlForm war ein Funktion die einen String (=komplette Webseite) zurückgeliefert hat.

Das funktioniert auch halbwegs, aber scheinbar nur mit Text. Bei Bildern wirds komplizierter.

Gemerkt habe ich das, als ich mir die Eliza Demo von http://www.TeamCoherence.com geladen habe. Dort übergibt man den Content nicht als String, sondern als Dateistream:

Delphi-Quellcode:
  LFilename := ARequestInfo.Document;
  if (LFilename = '/') or (LFilename = '/Graphics') then begin
    LFilename := '/index.html';
  end;
  LPathname := FHTMLDir + LFilename;
  if FileExists(LPathname) then begin
    AResponseInfo.ContentStream := TFileStream.Create(LPathname, fmOpenRead + fmShareDenyWrite);
FHTMLDir ist dabei das Document Root.

Als ich das dann in der anderen Demo durchgesteppt habe ist mir aufgefallen, das die Bilder extra angefordert werden (was auch irgendwie logisch ist). Bei einer Webseite mit 2 Bildern schiebt er also 3x einen ContentStream zum Browser. Und da wurde mir auch klar warum das bei mir nicht klappt. Die Aufrufe für die Bilder mögen ja von der Webseite (bzw. dem Browser) gekommen sein, aber die Auswertung dazu fehlte, denn er hat immer nur seinen Content String retour geschickt. Und deswegen hat es mit dem FILE verlinkten Bild auch geklappt. Das hat sich der Browser dann am Webserver vorbei gesaugt.

Ich hoffe ich liege da nicht soo falsch mit meiner Vermutung. Jedenfalls habe ich nun auch Bilder in meiner Webseite :cheer:

Christian Seehase 5. Jul 2008 13:02

Re: IdHTTPServer - Wo liegen Bilder für Webseiten?
 
Moin Dominik,

Zitat:

Zitat von moelski
Wo genau ist denn das Rootverzeichnis? Ichhabe noch keine Möglichkeit gefunden es auszulesen, geschweige denn zu setzen :gruebel:

Auslesen kannst Du das auch nicht.
Grundsätzlich gibt es bei einer HTML-Datei zwei Möglichkeiten:
  1. Das Rootverzeichnis ist die URL, aus der heraus das Dokument aufgerufen / erzeugt wurde (abzüglich Dateinamen)
  2. Das Rootvereichnis wird über das Base-Tag angegeben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:19 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz