Cześć!
Napisałem prosty serwer w oparty na TIdHTTPServer. W pliku html, który wczytuję do ResponseInfo z dysku jest odnośnik do pdf-a, który jest w tym samym folderze i powinien być wyświetlany w ramce jako obiekt, kod html wygląda tak:
<!DOCTYPE html>
<html lang="pl">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<body>
<object width="1950" height="1050" type="application/pdf" data="dok1.pdf"></object>
</body>
</html>
Gdy serwer odbierze request obsługuję go z grubsza tak:
AResponseInfo.ContentStream := TFileStream.Create(fname, fmOpenRead or fmShareDenyWrite);
gdzie fname jest nazwą pliku html.
Otóż okazuje się, że Indy rozpoznaje to jako dwa requesty i przetwarza je jeden po drugi, osobno plik html i osobno pdf.
Niestety zamiast pożądanego efektu otrzymuję tylko pdf. Próbowałem wcześniej metodami AresponseInfo.SmartServeFile() i Aresponseinfo.ServeFile() i wynik jest podobny, tyle, że zamiast pdfa w przeglądarce, przeglądarka próbuje mi go zapisać na dysku.
Napisałem więc równie prosty serwer korzystając z innego komponentu THTTPServerThread i tam podobnie w metodzie HandleRequest wczytuję plik html do MemoryStream z MemoryStream do Response.ContentStream i działa tak jak tego oczekuje. Mam pdf zanurzony w ramce HTML jeżeli mogę tak powiedzieć.
Co robię nie tak w Indy? A może to Indy nie obsługuje poprawnie <objectu>?
Proszę o Pomoc.