Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi idHttp Server - Bild zur verfügung stellen ?? (https://www.delphipraxis.net/44916-idhttp-server-bild-zur-verfuegung-stellen.html)

Assun 26. Apr 2005 19:56


idHttp Server - Bild zur verfügung stellen ??
 
Hi !

Habe schon einiges ausprobiert, und auch schon 2 Beispiel Codes gefunden. Aber trotzedm schaffe ich es nicht per idHttp Server ein Bild zur Verfügung zu stellen !(aufruf mit http://127.0.0.1:8888) :P

hier mein Code :

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
     IdHTTPServer1.Active := false;
     IdHTTPServer1.DefaultPort  := 8888; // Port 8888 ist Standard
     try
        IdHTTPServer1.Active := true;
     except
        raise;
     end;

     if IdHTTPServer1.Active then
     begin

       label1.Caption := 'Server ist: ONLINE an Port 8888';
     end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
     try
        IdHTTPServer1.Active := false;
     except
       raise;
     end;

     if not IdHTTPServer1.Active then
     begin
      Label1.Caption := 'Server ist: OFFLINE';
     end;
end;

procedure TForm1.IdHTTPServer1CommandGet(AThread: TIdPeerThread;
  ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var Stream : TFileStream;
TheString : String;
begin
    if fileexists('test.jpg') = true then ARequestInfo.Document := 'test.jpg';
    Stream := TFileStream.Create('test.jpg', fmOpenRead or fmShareDenyWrite);
    Setlength(TheString, Stream.size);
    Stream.Read(TheString[1], Stream.size);
    AResponseInfo.ContentType:='Content-Type: image/jpeg';
    AResponseInfo.ContentStream := Stream;
    AResponseInfo.ContentText := TheString;


end;
Wenn ich diesen Code benutze, wird ständig der Speichern unter Dialog des Explorers/IE/FireFox angezeigt ! Ich möchte aber, dass das Bild im Browser direkt angezeigt wird. Wie ist das zu schaffen ?

mfg,

Assun

Waldteufel 26. Apr 2005 19:58

Re: idHttp Server - Bild zur verfügung stellen ??
 
Hi.

Tu es doch einfach in HTML einbetten ;-)

Assun 26. Apr 2005 20:01

Re: idHttp Server - Bild zur verfügung stellen ??
 
das geht eben auch net ! Sogar html dateien werden mit dem Speichern unter Dialog angezeigt...

SirThornberry 26. Apr 2005 20:08

Re: idHttp Server - Bild zur verfügung stellen ??
 
Liste der Anhänge anzeigen (Anzahl: 1)
setze nur content-text und nix anderes.

im anhang hab ich nen kleines http-serverbeispiel

Assun 27. Apr 2005 14:37

Re: idHttp Server - Bild zur verfügung stellen ??
 
Puh ! Also ich habe gestern ewig im Source gesucht, aber nix gefunden, dass ich brauchen könnte :-(

dann habe ich ne weile rumexperementiert. schließlich kam das heraus :

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
     IdHTTPServer1.Active := false;
     IdHTTPServer1.DefaultPort  := 8888; // Port 8888 ist Standard
     try
        IdHTTPServer1.Active := true;
     except
        raise;
     end;

     if IdHTTPServer1.Active then
     begin

       label1.Caption := 'Server ist: ONLINE an Port 8888';
     end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
     try
        IdHTTPServer1.Active := false;
     except
       raise;
     end;

     if not IdHTTPServer1.Active then
     begin
      Label1.Caption := 'Server ist: OFFLINE';
     end;
end;

procedure TForm1.IdHTTPServer1CommandGet(AThread: TIdPeerThread;
  ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
Var
  Stream: TFilestream;
  TheString : String;
  begin

if ARequestInfo.Document = '/' then begin
IF fileexists('test.jpg') = true then ARequestInfo.Document := 'test.jpg';

end;

Stream := TfileStream.Create(ARequestInfo.Document, fmOpenRead or fmShareDenyWrite );
AResponseInfo.ContentStream := Stream;

setlength(TheString, stream.size);
stream.Read(TheString[1], stream.size);
end;
Allerdings geht das nur wenn ich offline bin !!! sobald ich online bin, wird das Bild nur im Quelltext dargestellt (über LocalIp oder iNetIP ist gleich)

kann mir da jemand weiterhelfen ?

Assun 27. Apr 2005 18:16

Re: idHttp Server - Bild zur verfügung stellen ??
 
*vorsichtig-push* sry, aber ich brauche das dringend. weiss einer woran das liegt ?

SirThornberry 27. Apr 2005 19:29

Re: idHttp Server - Bild zur verfügung stellen ??
 
kurze frage: wird das bild richtig angezeigt wenn du meinen beispielserver nutzt?

Assun 27. Apr 2005 20:05

Re: idHttp Server - Bild zur verfügung stellen ??
 
habs ehrlich gesagt noch net ausproberit, denn ich müsste das ja umproggen, da man so wie es ist nur htm files öffnen kann...

Aber was mich wundert !!! : mit dem von mir oben geposteten Code geht es wenn ich offline bin super ! wenn ich on bin wird das bild aber nur als Quelltext (so wie wenn mans mit Editor öffnen würde) angezeigt...slebst bei 127.0.0.1 !!!


Raff ich net :-(

SirThornberry 27. Apr 2005 20:21

Re: idHttp Server - Bild zur verfügung stellen ??
 
den fehler versteh ich auch nicht... Umproggen? musst du nicht, stelle den Modus auf "Einfach" trage als "StandartDatei" den namen deines Bildes ein, ändere den Port (dann eventuell programm neu starten). Und anschließend kannst du über "http://127.0.0.1:8888" das ganze aufrufen und es sollte dir dein bild zurück gegeben werden sofern es in dem ordner gefunden wird.

Assun 27. Apr 2005 21:06

Re: idHttp Server - Bild zur verfügung stellen ??
 
Hey ! Habe nun den Fehler gefunden. Es lag an Content-Type. Falls es jemand braucht, So geht der Code :

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
     IdHTTPServer1.Active := false;
     IdHTTPServer1.DefaultPort  := 8888; // Port 8888 ist Standard
     try
        IdHTTPServer1.Active := true;
     except
        raise;
     end;

     if IdHTTPServer1.Active then
     begin

       label1.Caption := 'Server ist: ONLINE an Port 8888';
     end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
     try
        IdHTTPServer1.Active := false;
     except
       raise;
     end;

     if not IdHTTPServer1.Active then
     begin
      Label1.Caption := 'Server ist: OFFLINE';
     end;
end;

procedure TForm1.IdHTTPServer1CommandGet(AThread: TIdPeerThread;
  ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
Var
  Stream: TFilestream;
  TheString : String;
  begin
if ARequestInfo.Document = '/' then begin
AResponseInfo.ContentType  := 'image/jpeg';
IF fileexists('test.jpg') = true then ARequestInfo.Document := 'test.jpg';
end;
Stream := TfileStream.Create('test.jpg', fmOpenRead or fmShareDenyWrite );
AResponseInfo.ContentStream := Stream;
setlength(TheString, stream.size);
stream.Read(TheString[1], stream.size);
end;


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

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