Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi IdHTTPServer Bilder mit Text verschicken ?!? (https://www.delphipraxis.net/126661-idhttpserver-bilder-mit-text-verschicken.html)

shifter 30. Dez 2008 12:11


IdHTTPServer Bilder mit Text verschicken ?!?
 
Hi Leute,

habe folgendes Problemm.

Versuche mit hilfe von IdHTTPServer einen Dynamisch generierte website zur versenden, leider klapt es nur zum teil.


Delphi-Quellcode:
Procedure TForm1.IdHTTPServer1CommandGet(AContext: TIdContext; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
Var html : String;
Begin
  HTML_PAGEPRODUCER( html );
  AResponseInfo.ContentText := html;
End;
HTML_PAGEPRODUCER -> Hier wird die seite zusammen geschustert.

Solange es sich nur um Text handelt funktioniert es 100%-ig.
Wenn ich in diese seite bilder integriere werden die nicht angezeigt.

wie kann ich es realizieren ?

gruss
seba


und Danke in vorraus.

Klaus01 30. Dez 2008 12:18

Re: IdHTTPServer Bilder mit Text verschicken ?!?
 
Hallo,

wenn Du dir im Browser den Quelltext der generierten Seite anschaust
wie lauten dann die Pfadangaben zu den Bildern.
Sind sie dort auch auf Deinem Computer?

Grüße
Klaus

shifter 30. Dez 2008 12:27

Re: IdHTTPServer Bilder mit Text verschicken ?!?
 
Hi,

die Pfad angaben sind 100%-ig korrect. Wenn ich versuche anderen Pfad angaben zu machen bekomme ich ganz anderen platzhalter.
Somit liegt es nicht an den Pfad. Der muss korrect sein.

gruss
seba

Klaus01 30. Dez 2008 12:33

Re: IdHTTPServer Bilder mit Text verschicken ?!?
 
.. dann ist es ja gut.

In diesem Thread wurde ein ähnliches Problem wie das Deine behandelt.
Vielleicht hilft es Dir ja.

Grüße
Klaus

shifter 30. Dez 2008 12:45

Re: IdHTTPServer Bilder mit Text verschicken ?!?
 
Ich kenne diesen Thread, den habe ich mir schon angeschaut, aber ich komme trotz dem nich klar damit.

gruss
seba

shifter 30. Dez 2008 12:48

Re: IdHTTPServer Bilder mit Text verschicken ?!?
 
Noch ein Info vieleicht.

Wenn ich mit IE zugreife auf mein Rechner bekomme ich von mein Prog. generierte seite zurück ohne grafiken,
wenn ich aber diese seite von IE speichere und diese abgespeicherte seite abrufe bekomme ich eine 100%-ige seite angezeigt mit dem Grafiken.

warum ?


gruss
seba

Meflin 30. Dez 2008 12:53

Re: IdHTTPServer Bilder mit Text verschicken ?!?
 
Das klingt sehr danach, als ob du absolute PFadangaben zu den Bildern verwendest!

Wie sieht denn der generierte Quelltext aus?

shifter 30. Dez 2008 13:01

Re: IdHTTPServer Bilder mit Text verschicken ?!?
 
Das stimmt aller dings.

Ja wo kann ich den dem IdhTTPServer sagen wo sein Root verzeichnis liegt ?


gruss
seba

Klaus01 30. Dez 2008 13:03

Re: IdHTTPServer Bilder mit Text verschicken ?!?
 
Zitat:

Zitat von shifter
Hi,

die Pfad angaben sind 100%-ig korrect. Wenn ich versuche anderen Pfad angaben zu machen bekomme ich ganz anderen platzhalter.
Somit liegt es nicht an den Pfad. Der muss korrect sein.

gruss
seba

Zitat:

Zitat von shifter
Das stimmt aller dings.

Zitat:

Zitat von shifter

Ja wo kann ich den dem IdhTTPServer sagen wo sein Root verzeichnis liegt ?


gruss
seba

Ich weiß nicht ob man das RootVerzeichnis einstellen kann.
Meines Wissens ist es das Verzeichnis von wo aus der Server gestartet wurde.

Grüße
Klaus

shifter 30. Dez 2008 13:13

Re: IdHTTPServer Bilder mit Text verschicken ?!?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ja das denke ich auch,
deswege kann ich mir nicht vorstellen das es an den Pfad liegt.

Ich habe alle möglichen warianten ausprobiert
und immer wenn ich ein falschen pfad angewendet habe habe ich platzhalter für die grafik mit einem roten kreuz bekommen,
aber wenn ich ihm realen pfad zur grafik angebe bekomme ich ein platzhalter mit "abgebildete grafik" siege anhang

shifter 30. Dez 2008 13:14

Re: IdHTTPServer Bilder mit Text verschicken ?!?
 
Und deswegen bin ich der meinung das es nicht an den pfad liegt.

Meflin 30. Dez 2008 13:15

Re: IdHTTPServer Bilder mit Text verschicken ?!?
 
Mensch. Jetz zeig uns doch mal das generierte HTML!

shifter 30. Dez 2008 13:29

Re: IdHTTPServer Bilder mit Text verschicken ?!?
 
Das ist diese test html mit diesen zwei bildchen aus dem anhang.

Delphi-Quellcode:
html := 'test</br>' +
          '   [img]HTTP/atas_su_kiri.gif[/img]' +
          '[img]E:\DELPHI\° DELPHI 2007 °\HELIMA 1\HTTP\atas_su_kiri.gif[/img]';

Klaus01 30. Dez 2008 13:34

Re: IdHTTPServer Bilder mit Text verschicken ?!?
 
Code:
html := 'test</br>' + 
          '  [img]./atas_su_kiri.gif[/img]' + 
          '[img]./atas_su_kiri.gif[/img]';
Was passiert wenn Du den html Code so änderst.
Mit relativen Pfaden. Hier sollten die Bilder dann im Verzeichnis des Servers liegen.

Grüße
Klaus

shifter 30. Dez 2008 13:40

Re: IdHTTPServer Bilder mit Text verschicken ?!?
 
Dann kommen immer platzhalter mit roten kreutz.

gruss
seba

shifter 30. Dez 2008 14:03

Re: IdHTTPServer Bilder mit Text verschicken ?!?
 
Leute lass mich nicht hengen.

Was mit dem TPageProducer ? Wofür kann mann ihm gebrauchen ?
Oder hab schon mal gesehen
Delphi-Quellcode:
aresponseinfo.ContentType :='image/gif';
Helft mir bitte.

gruss
seba

Klaus01 30. Dez 2008 14:31

Re: IdHTTPServer Bilder mit Text verschicken ?!?
 
Hallo shifter,

komme da im Moment auch nicht weiter.
Werde mich heute abend daheim noch mal da dran setzen.

Geht es denn bei Dir, wenn Du die Datei abspeicherst und dann
der Server die Datei liest?

Grüße
Klaus

shifter 30. Dez 2008 14:40

Re: IdHTTPServer Bilder mit Text verschicken ?!?
 
Habe ich auch versucht.
Ich habe in IE mir den QuellText angezeigt und gespeichert in eine Datei. Diese Datei habe ich den IdHTTPServer gegeben um auf anfragen diese zu senden. leider bin ich ein bisschen zu blöd für diese sachen.
Ich brauch es aber und das noch am besten gestern.

gruss
seba

shifter 30. Dez 2008 16:12

Re: IdHTTPServer Bilder mit Text verschicken ?!?
 
Vieleicht hab ich mein Problemm nicht verständlich erklärt,
hier noch ein versuch


Ich habe ein prg der einfach nur irgendwelche daten liefert ( uninteresant )
In diesen programm möchte ich ein webserver einbauen damit die user aus dem netzt sich status infos ansehen können.

also de httpserver soll einfach immer wieder die "gleiche seite" anzeigen ( natürlich die wete in diese seite ändern sich )

Bis jezt hat diese info seite nur reines text gehabt und mit folgende routine hat es 100%-ig functioniert :
Delphi-Quellcode:
procedure TForm1.IdHTTPServer1CommandGet(AContext: TIdContext; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
Begin
  aresponseinfo.ContentText := GET_HTML;
End;


GET_HTML Hat einfach normales html code geliefert ohne jäglichen bildern.


Jezt hab ich bilder eingebaut in den html code und diese werden nicht angezeigt !
DIE PFAD ANGABEN SIND KORRECT
Bevor jemand die frage stellt.

Es werden einfach Platzhalter angezeigt die Bilder werden nicht übertragen.

Wie kann ich mein Problemm lösen, damit der IdHTTPServer die Bilder Sendet ?

gruss
seba


@ Meflin :
Bloss keine aufregung.

QuickAndDirty 30. Dez 2008 16:28

Re: IdHTTPServer Bilder mit Text verschicken ?!?
 
Also ausser dem Pfad kann man bei sowas nichts Falsch machen.
Allerdings kenne ich immer nur Pfade reaktiv zur HTML Datei und die gibt es ja hier nicht.

Was passiert wenn du die Bilder in das Exe Dir kopierst und sie ohen Pfadangabe in die seite verlinkst?

Apropos, sollte deine Anwednung ein Dienst sein liegt das Workdir automatisch im Windows Ornder du must es dann
manuell wieder auf das EXE Dir setzen.

shifter 30. Dez 2008 16:37

Re: IdHTTPServer Bilder mit Text verschicken ?!?
 
Wenn ich nur ein bild versende klapt es mit :
Delphi-Quellcode:
aresponseinfo.ContentStream := tfilestream.Create(p,fmopenread);
p ist filename mit dem pfad. So functioniert es.

Dann habe ich folgendes versucht :
Delphi-Quellcode:
  if arequestinfo.Document ='/'
    then aresponseinfo.ContentText := htmltext;
    else aresponseinfo.ContentStream := tfilestream.Create(p,fmopenread);
Wenn htmltext enthält keine bilder dann wird es ohne problemme dargestellt,
wenn htmltext enthält nur bilder wird es auch ohne problemme dargestellt

aber wenn htmltext beinhaltet bilder und text dann kommt nur der text und für bilder bleibt nur der platzhalter.

bin am ende

gruss

shifter 30. Dez 2008 16:40

Re: IdHTTPServer Bilder mit Text verschicken ?!?
 
So sieht die ganze Test geschichte aus :
Delphi-Quellcode:
procedure TForm1.IdHTTPServer1CommandGet(AContext: TIdContext; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
Var html, p : String;
begin
  p := 'E:\DELPHI\° DELPHI 2007 °\WEB SERVER TEST\test.jpg';
  html := '<Table>' +
            '<tr><td>' +
            '[b]Hallo Jezt geht los[/b]' +
            '</td></tr></table>';
//          '[img]'+p+'[/img]';

  If ARequestInfo.Document ='/'
    Then AResponseInfo.ContentText := html
    Else AResponseInfo.ContentStream := tfilestream.Create(p,fmopenread);


end;
gruss
seba

shifter 30. Dez 2008 17:39

Re: IdHTTPServer Bilder mit Text verschicken ?!?
 
Ich habe die lösung :

Delphi-Quellcode:

  p := relpfad + ARequestInfo.Document;
  If ARequestInfo.Document ='/' Then Begin
    AResponseInfo.ContentText := html;
  End else begin
    AResponseInfo.ContentStream := tfilestream.Create(p,fmopenread);
  End;
Ich habe mich einfach im kreis gedreht und die welt nicht meht verstanden.
Aber am ende ist es simpler als ich dachte.

Trotz dem ich danke euch.

gruss
seba

Klaus01 30. Dez 2008 18:16

Re: IdHTTPServer Bilder mit Text verschicken ?!?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Shifter,

sodele auch eine kleine Lösung:

Wenn die HTML Seite nur im Speicher liegen soll.
Das wird aber recht unübersichtlich, wenn die Seite noch mehrere Links hat.

Delphi-Quellcode:
function pageCreater:TMemoryStream;
var
  sl : TStringList;
begin
  result := TMemoryStream.Create;
  sl := TStringList.create;
  sl.add('<html>');
  sl.add('<body>');
  sl.add(' dies ist ein Test');
  sl.add('<hr>');
  sl.add('[img]./_herz.jpg[/img]');
  sl.add('</body>');
  sl.add('</html>');
  sl.SaveToStream(result);
  sl.free;

end;

procedure TForm1.IdHTTPServer1CommandGet(AThread: TIdPeerThread;
  ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
begin
  if ARequestInfo.Document = '/index.html' then
    AResponseInfo.ContentStream:=pageCreater
  else
    AResponseInfo.ContentStream:=TFileStream.Create(ExtractFilePath(ParamStr(0))+ARequestInfo.Document,fmOpenRead);
  Memo1.Lines.Add(ARequestInfo.Document);
end;

Der einfachere Weg ist daher die html Seite auf der Platte liegen zu haben.

Delphi-Quellcode:
procedure TForm1.IdHTTPServer1CommandGet(AThread: TIdPeerThread;
  ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
begin
    AResponseInfo.ContentStream:=TFileStream.Create(ExtractFilePath(ParamStr(0))+ARequestInfo.Document,fmOpenRead);
  Memo1.Lines.Add(ARequestInfo.Document);
end;
Das ist mit Indy9 gemacht, kann sein, dass Indy10 da etwas abweicht.


Schönen Abend noch
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:54 Uhr.

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