Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2007.02.04;
Скачать: [xml.tar.bz2];

Вниз

idHTTPServer - ARespoceInfo в OnCommandGet   Найти похожие ветки 

 
BFG9k ©   (2006-08-25 19:41) [0]

Имеется шаблон HTML документа, в котором надо изменить некоторые специализированные теги. Использую PageProducer + idHTTPServer. Без использования PageProducer"а все работает корректно:


procedure TForm1.IdHTTPServer1CommandGet(AThread: TIdPeerThread;
 ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var FS:TFileStream;
begin
 FS:=TFileStream.Create    (WWW_ROOT+ARequestInfo.Document,fmOpenRead);

 AResponseInfo.ContentStream:=FS
end;


При использовании PageProducer"а в документе не выводятся картинки :


procedure TForm1.IdHTTPServer1CommandGet(AThread: TIdPeerThread;
 ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var FS:TFileStream;
begin
 FS:=TFileStream.Create    (WWW_ROOT+ARequestInfo.Document,fmOpenRead);

 AResponseInfo.ContentText:=PageProducer1.ContentFromStream(FS);
end;


Вообще картинки не выводятся в любом случае, если присваивается AResponseInfo.ContentText.
Вопрос: почему так происходит и что можно сделать ?


 
Орион ©   (2006-08-26 18:09) [1]

> Вопрос: почему так происходит и что можно сделать ?
Почему не знаю, а сделать можно следующее:

procedure TForm1.IdHTTPServer1CommandGet(AThread: TIdPeerThread;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var
FileStream: TFileStream;
Data: TStringStream;
begin
FileStream:=TFileStream.Create(WWW_ROOT+ARequestInfo.Document, fmOpenRead);
Data:=TStringStream.Create(PageProducer1.ContentFromStream(FileStream));
AResponseInfo.ContentStream:=Data;
Data.Free;
FileStream.Free;
end;


 
Slym ©   (2006-08-28 04:51) [2]

НЕ ДЕЛАЙ ТАК!!!
WWW_ROOT+ARequestInfo.Document
это грозит вот этим!!!:
ARequestInfo.Document:="..\..\..\WINDOWS\system32\config\system.sav";


 
Slym ©   (2006-08-28 05:18) [3]

Должно быть типа так:
procedure TForm1.IdHTTPServer1CommandGet(AThread: TIdPeerThread;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var
FileName:string;
FileStream: TFileStream;
Data: TStringStream;
begin
//Например так
FileName:=Проверяем_имя_файла(ARequestInfo.Document);
FileStream:=TFileStream.Create(WWW_ROOT+FileName, fmOpenRead);
try
Data:=TStringStream.Create(PageProducer1.ContentFromStream(FileStream));
try
AResponseInfo.ContentStream:=Data;
AResponseInfo.WriteContent;
finally
Data.Free;
end;
finally
FileStream.Free;
end;
end;



 
Орион ©   (2006-08-28 12:08) [4]

> [3] Slym ©   (28.08.06 05:18)

WriteHeaders забыл))


 
Slym ©   (2006-08-28 12:40) [5]

Орион ©   (28.08.06 12:08) [4]
Но инди помнит :)


 
BFG9k ©   (2006-08-28 15:27) [6]

Спасибо, все работает. Но почему то при попытках уничтожить потоки ( Data.Free и FileStream.Free) происходит Access Violation.


 
BFG9k ©   (2006-08-28 16:41) [7]

Нашел.
В AResponseInfo.WriteContent происходит уничтожение потока



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2007.02.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.061 c
15-1168607123
DVM
2007-01-12 16:05
2007.02.04
Как вам такой админ. Говорят правда.


2-1167199008
Sw
2006-12-27 08:56
2007.02.04
Индексы


3-1163058620
O.O
2006-11-09 10:50
2007.02.04
UPDATE


2-1168970687
malyar
2007-01-16 21:04
2007.02.04
opendialog & savedialog


2-1169127758
dimmih
2007-01-18 16:42
2007.02.04
компоненты





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский