Delphi > Obecné

Root adresář

(1/2) > >>

lubomir.senkyrik:
Zdravím všechny,
pokouším se psát webové stránky přes WebBroker. Ve WebModule mám komponentu PageProducer, která odkazuje (absolutně) na HTML soubor (Index.htm). Při testování volám z prohližeče 'localhost:8080'. Stránka se mi zobrazí, ale grafické prvky PNG (jsou adresovány relativně) nikoliv.

Jaký je "Root" adresář serverové aplikace, nebo kde se definuje?

Dík.

Radek Červinka:
Pokud to mas jako webmodule tak jsem to resil tak, ze v action jsem obslouzil sam (ale to jsem obrazky generoval), mozna to jde jinak

takovy nastin


--- Kód: Delphi --- function sLocalFile(const sName: string): string;begin  Result := ExtractFilePath(ParamStr(0)) '\' sName;end; procedure TWebModule2.WebModule2designHandlerAction(Sender: TObject; Request: TWebRequest; Response: TWebResponse;  var Handled: Boolean);begin  try //  sFile ziskas z Request.PathInfo nebo podobne a namapujes si ho napr. sLocalFile(Request.PathInfo)// pokud je to png nebo co chces jineho, tak nastavis Handled := True;    oFileStream :=TFileStream.Create(sFile, fmOpenRead);    try      Response.ContentType := 'image/png';      Response.ContentStream := oFileStream;    finally      //oFileStream.Free;    end;  except    on e: Exception do    begin      Response.Content := Format('<html><heading/><body>Error:%s</body></html>', [e.Message]);      Response.StatusCode :=  500;//500 Internal Server Error    end;  end;end;  

KarelHorky:
Kde je root záleží na serveru. Já mám CGI aplikace na Apache ve složce c:\Apache24\cgi-bin\, ale root je ve složce c:\Apache24\htdocs\ .
V html mám odkaz na obrázek takto:
<img src="/img/cz.png" alt="CZ">
Obrázek české vlaječky mám tady:
c:\Apache24\htdocs\img\cz.png

Radek Červinka:
Jo, v tvem pripade to zaridi Apache, pokud to mas jako Indy web server tak to musis zaridit sam.

lubomir.senkyrik:
Pánové,
díky Vám jsem se posunul o dost dále. Sice se mi obrázky i nadále nezobrazují, ale musí to být v nějaké properties. Bázová adresa se dá zjistit odkud je server (aplikace) spouštěn. Pod tímto adresářem je podadresář /HTML a pod ním je ještě /PNG. Root adresář je skutečně adresář, kde jsou *.htm soubory a od ní se vše odvozuje.

Pokud zadám do prohlížeče adresu kde leží *.htm (C:/App/Billiard_FM/Bin/HTML/Index.htm), tak se mi vše korektně zobrazuje. Samozřejmě nejsou funkční události v serverovské aplikaci, ale všechny události v rámci *.htm probíhají zcela korektně a odkazy na další *.htm též.

Pokud zadám do prohlížeče localhost:8080, tak všechny relativní adresy se chovají jako neviditelné, ale asi je to jen můj dojem. Když jsem totiž v modulu TWebModule.Create otevřel libovolný soubor PNG, tak při otevírání stránek mi server vyvolal vyjímku, že tento soubor PNG nelze otevřít, poněvadž je již otevřen. To znamená, že HTML stránka mi správně otvírá soubor, ale z nějakého důvodu ho nezobrazuje. Proč, tak to nechápu.

Udělal jsem si úplně jednoduchý pokus s absolutním adresováním:

  Response.Content := '<html>' +
                        '<head>' +
                          '<title>Ahoj</title>' +
                        '</head>' +

                        '<body>' +
                        'Ahoj obrázku: <img id="Obrazek" src="C:/App/Billiard_FM/Bin/HTML/PNG/No.png" width="204" height="454" alt="Dom" />' +
                        '</body>' +
                      '</html>';

Výsledek: příloha..., opět se obrázek nezobrazí.

Zkoušel jsem to na platformách W32, W64 s komponentami VCL ale i s FM (FireMonkey). Stále stejné chování.

Máte ještě nějaký nápad?

Dík.

Navigace

[0] Seznam témat

[#] Další strana

Přejít na plnou verzi