Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.02.04;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.051 c
4-1158830774
2ded
2006-09-21 13:26
2007.02.04
JOB_INFO_1 PagesPrinted


15-1168634182
ProgRAMmer Dimonych
2007-01-12 23:36
2007.02.04
Подскажите софтинку...


4-1159123015
Fio
2006-09-24 22:36
2007.02.04
Поиск и регистрация процессов в WinXP


9-1143470364
Shweps
2006-03-27 18:39
2007.02.04
Документация по созданию игры на Delphi


3-1163647680
petvv
2006-11-16 06:28
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский